日期:2014-05-18 浏览次数:20723 次
declare @A表 table (id int,size1 int,size2 int,size3 int,size4 int,size5 int) insert into @A表 select 1,0,0,0,1,0 union all select 2,1,1,0,1,0 declare @B表 table (id int,qty1 int,qty2 int,qty3 int,qty4 int,qty5 int) insert into @B表 select 1,0,0,0,1,0 union all select 2,1,1,1,1,0 SELECT 有效值 = a.size1 * b.qty1 + a.size2 * b.qty2 + a.size3 * b.qty3 + a.size4 * b.qty4 + a.size5 * b.qty5 FROM @A表 a LEFT JOIN @B表 b ON a.id = b.id /* 有效值 ----------- 1 3 */
------解决方案--------------------
如果值是固定0和1时可以去掉sign,如果是>=0时要加上
------解决方案--------------------
如果没有NULL值,并且都大于等于零,则直接
SELECT
size1*qty1+size2*qty2+size3*qty3+size4*qty4+size5*qty5
FROM A,B where 连接条件
如果有NULL值,或者相乘的结果可能小于零,且要丢弃,则要判断:
SELECT
(case when size1*qty1>0 then size1*qty2 else 0 end)+
(case when size2*qty2>0 then size2*qty2 else 0 end)+
(case when size3*qty3>0 then size3*qty3 else 0 end)+
(case when size4*qty4>0 then size4*qty4 else 0 end)+
(case when size5*qty5>0 then size5*qty5 else 0 end)
FROM A,B where 连接条件