sql server中如何添加新的一列,而这一列中的值是前两列的乘积?

时间:2021-12-08 10:34:42
如题。。。 我想要的结果如下:

单价  数量   所付金额
1      2       2
2      2       4 


可是我写了SQL的增加新一列并插入数据的时候得出这样的结果,不知道该怎么办,下面是得出的结果:

单价    数量    所付金额
1        2       null
2        2       null
null     null    2
null     null    4 


我应该怎么写语句呢, 单价和数量是已经存在在表格里面的,现在就是想做一下统计。xdjm 们帮帮忙,谢谢

8 个解决方案

#1


我 的语句是:alter table 销售表 add 所付金额  float

插入数据的是:
insert 
  into 销售表(所付金额)
  select sum(单价*订单数量)as 所付金额
 from 销售表


我总感觉这样的思想不对,不知道还有没有其他的 处理方法。。。不用增加插入。用触发器可以吗?可是又没有用过触发器,不知道怎么写,那位高手能帮忙指点一下?

#2


错了,上边的selcet的子句我是这样写的:select 单价*订单数量  as  所付金额  from  销售表

#3


--添加计算列:

alter table 表名 add 所付金额 as (单价*数量)

#4


sql server中如何添加新的一列,而这一列中的值是前两列的乘积

-----------------------------------------------------------------
LZ可以添加一个计算列,这样就不用自己去算了

alter table [销售表] add [所付金额]  float AS [单价] * [数量]


查询直接 select [所付金额]  from [销售表]

#5


create table #test (单价 money, 数量 int)
go

insert #test select 1,2
insert #test select 2,2
select * from #test
/*
单价 数量
1.0000 2
2.0000 2
*/
go

alter table #test add 所付金额 as (单价*数量)
go

select * from #test
/*
单价 数量 所付金额
1.0000 2 2.0000
2.0000 2 4.0000
*/

drop table #test

#6


不愿意要计算列的话,可以
alter table t add t_col numeric(10,4)
go
update t set t_col = t_col1 * t_col 2 where ...
go

#7


谢谢同志们。那么简单的问题~~ 唉。。。原来写在一起 就可以只直接在后边显示了。。。

#8


那如果数据库不保存 '所付金额',而在查询数据时才计算得到'所付金额'。这样的SQL该怎么写,有这类的聚集函数么?

#1


我 的语句是:alter table 销售表 add 所付金额  float

插入数据的是:
insert 
  into 销售表(所付金额)
  select sum(单价*订单数量)as 所付金额
 from 销售表


我总感觉这样的思想不对,不知道还有没有其他的 处理方法。。。不用增加插入。用触发器可以吗?可是又没有用过触发器,不知道怎么写,那位高手能帮忙指点一下?

#2


错了,上边的selcet的子句我是这样写的:select 单价*订单数量  as  所付金额  from  销售表

#3


--添加计算列:

alter table 表名 add 所付金额 as (单价*数量)

#4


sql server中如何添加新的一列,而这一列中的值是前两列的乘积

-----------------------------------------------------------------
LZ可以添加一个计算列,这样就不用自己去算了

alter table [销售表] add [所付金额]  float AS [单价] * [数量]


查询直接 select [所付金额]  from [销售表]

#5


create table #test (单价 money, 数量 int)
go

insert #test select 1,2
insert #test select 2,2
select * from #test
/*
单价 数量
1.0000 2
2.0000 2
*/
go

alter table #test add 所付金额 as (单价*数量)
go

select * from #test
/*
单价 数量 所付金额
1.0000 2 2.0000
2.0000 2 4.0000
*/

drop table #test

#6


不愿意要计算列的话,可以
alter table t add t_col numeric(10,4)
go
update t set t_col = t_col1 * t_col 2 where ...
go

#7


谢谢同志们。那么简单的问题~~ 唉。。。原来写在一起 就可以只直接在后边显示了。。。

#8


那如果数据库不保存 '所付金额',而在查询数据时才计算得到'所付金额'。这样的SQL该怎么写,有这类的聚集函数么?