表TABLE1: 编号 数量1 数量2 金额
1 2 1 1.5
2 3 5 1.5
3 NULL 2 2.5
4 NULL NULL 3.5
要求结果是: 编号(TABLE1.编号) 总计((数量1-数量2)*金额)
1 1.5
2 -3
3 -5
4 NULL但是我求出来第三行是 NULL 是不是因为 数量1是NULL 所以式子就没办法运算
1 2 1 1.5
2 3 5 1.5
3 NULL 2 2.5
4 NULL NULL 3.5
要求结果是: 编号(TABLE1.编号) 总计((数量1-数量2)*金额)
1 1.5
2 -3
3 -5
4 NULL但是我求出来第三行是 NULL 是不是因为 数量1是NULL 所以式子就没办法运算
你可以设置null默认为0
insert into tb values(1 , 2 , 1 , 1.5 )
insert into tb values(2 , 3 , 5 , 1.5 )
insert into tb values(3 , NULL , 2 , 2.5 )
insert into tb values(4 , NULL , NULL, 3.5 )
goselect * , 总计 = (isnull(数量1 , 0) - isnull(数量2,0)) * 金额 from tb
drop table tb/*
编号 数量1 数量2 金额 总计
----------- ----------- ----------- -------------------- -------------------------------
1 2 1 1.5 1.5
2 3 5 1.5 -3.0
3 NULL 2 2.5 -5.0
4 NULL NULL 3.5 .0(所影响的行数为 4 行)
*/
insert into tb values(1 , 2 , 1 , 1.5 )
insert into tb values(2 , 3 , 5 , 1.5 )
insert into tb values(3 , NULL , 2 , 2.5 )
insert into tb values(4 , NULL , NULL, 3.5 )
goselect * , 总计 =
(case when 数量1 is null and 数量2 is null then null else
(isnull(数量1 , 0) - isnull(数量2,0)) * 金额 end)
from tb
drop table tb/*
编号 数量1 数量2 金额 总计
----------- ----------- ----------- -------------------- -------------------------------
1 2 1 1.5 1.5
2 3 5 1.5 -3.0
3 NULL 2 2.5 -5.0
4 NULL NULL 3.5 NULL(所影响的行数为 4 行)
*/