单价 数量 所付金额
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 销售表
我总感觉这样的思想不对,不知道还有没有其他的 处理方法。。。不用增加插入。用触发器可以吗?可是又没有用过触发器,不知道怎么写,那位高手能帮忙指点一下?
插入数据的是:
insert
into 销售表(所付金额)
select sum(单价*订单数量)as 所付金额
from 销售表
我总感觉这样的思想不对,不知道还有没有其他的 处理方法。。。不用增加插入。用触发器可以吗?可是又没有用过触发器,不知道怎么写,那位高手能帮忙指点一下?
#2
错了,上边的selcet的子句我是这样写的:select 单价*订单数量 as 所付金额 from 销售表
#3
--添加计算列:
alter table 表名 add 所付金额 as (单价*数量)
alter table 表名 add 所付金额 as (单价*数量)
#4
sql server中如何添加新的一列,而这一列中的值是前两列的乘积
-----------------------------------------------------------------
LZ可以添加一个计算列,这样就不用自己去算了
alter table [销售表] add [所付金额] float AS [单价] * [数量]
查询直接 select [所付金额] from [销售表]
-----------------------------------------------------------------
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
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
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 销售表
我总感觉这样的思想不对,不知道还有没有其他的 处理方法。。。不用增加插入。用触发器可以吗?可是又没有用过触发器,不知道怎么写,那位高手能帮忙指点一下?
插入数据的是:
insert
into 销售表(所付金额)
select sum(单价*订单数量)as 所付金额
from 销售表
我总感觉这样的思想不对,不知道还有没有其他的 处理方法。。。不用增加插入。用触发器可以吗?可是又没有用过触发器,不知道怎么写,那位高手能帮忙指点一下?
#2
错了,上边的selcet的子句我是这样写的:select 单价*订单数量 as 所付金额 from 销售表
#3
--添加计算列:
alter table 表名 add 所付金额 as (单价*数量)
alter table 表名 add 所付金额 as (单价*数量)
#4
sql server中如何添加新的一列,而这一列中的值是前两列的乘积
-----------------------------------------------------------------
LZ可以添加一个计算列,这样就不用自己去算了
alter table [销售表] add [所付金额] float AS [单价] * [数量]
查询直接 select [所付金额] from [销售表]
-----------------------------------------------------------------
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
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
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该怎么写,有这类的聚集函数么?