27,579
社区成员
发帖
与我相关
我的任务
分享
DECLARE @A TABLE(CLID INT, ZD1 INT, ZD2 INT, ZD3 INT, ZD4 INT)
INSERT @A SELECT 813 , 2, 3, 6, 12
INSERT @A SELECT 625, 1 , 6, 11, 8
DECLARE @B TABLE(CLCJ VARCHAR(10), CLID INT, ZD1 INT, ZD2 INT, ZD3 INT, ZD4 INT , heji INT)
INSERT @B SELECT 'WANG' , 813, 3, 12, 5 , 14,34
INSERT @B SELECT 'FENG' ,625, 2 , 11 , 8 ,4 ,25
INSERT @B SELECT 'NAI' ,702 , 3 , 7 ,4 , 6 , 20
SELECT B. CLID,
CASE WHEN B.ZD1>ISNULL(A.ZD1,0) THEN B.ZD1-ISNULL(A.ZD1,0) ELSE 0 END ZD1,
CASE WHEN B.ZD2>ISNULL(A.ZD2,0) THEN B.ZD2-ISNULL(A.ZD2,0) ELSE 0 END ZD2,
CASE WHEN B.ZD3>ISNULL(A.ZD3,0) THEN B.ZD3-ISNULL(A.ZD3,0) ELSE 0 END ZD3,
CASE WHEN B.ZD4>ISNULL(A.ZD4,0) THEN B.ZD4-ISNULL(A.ZD4,0) ELSE 0 END ZD4,
CASE WHEN B.ZD1>ISNULL(A.ZD1,0) THEN B.ZD1-ISNULL(A.ZD1,0) ELSE 0 END +
CASE WHEN B.ZD2>ISNULL(A.ZD2,0) THEN B.ZD2-ISNULL(A.ZD2,0) ELSE 0 END +
CASE WHEN B.ZD3>ISNULL(A.ZD3,0) THEN B.ZD3-ISNULL(A.ZD3,0) ELSE 0 END+
CASE WHEN B.ZD4>ISNULL(A.ZD4,0) THEN B.ZD4-ISNULL(A.ZD4,0) ELSE 0 END 合計
FROM @B B LEFT JOIN @A A ON A.CLID=B.CLID
/*CLID ZD1 ZD2 ZD3 ZD4 合計
----------- ----------- ----------- ----------- ----------- -----------
813 1 9 0 2 12
625 1 5 0 0 6
702 3 7 4 6 20
*/
DECLARE @A TABLE(CLID INT, ZD1 INT, ZD2 INT, ZD3 INT, ZD4 INT)
INSERT @A SELECT 813 , 2, 3, 6, 12
INSERT @A SELECT 625, 1 , 6, 11, 8
DECLARE @B TABLE(CLCJ VARCHAR(10), CLID INT, ZD1 INT, ZD2 INT, ZD3 INT, ZD4 INT , heji INT)
INSERT @B SELECT 'WANG' , 813, 3, 12, 5 , 14,34
INSERT @B SELECT 'FENG' ,625, 2 , 11 , 8 ,4 ,25
INSERT @B SELECT 'NAI' ,702 , 3 , 7 ,4 , 6 , 20
SELECT B. CLID,
ABS(B.ZD1-ISNULL(A.ZD1,0))ZD1,
ABS(B.ZD2-ISNULL(A.ZD2,0))ZD2,
ABS(B.ZD3-ISNULL(A.ZD3,0))ZD3,
ABS(B.ZD4-ISNULL(A.ZD4,0))ZD4,
ABS(B.ZD1-ISNULL(A.ZD1,0))+
ABS(B.ZD2-ISNULL(A.ZD2,0))+
ABS(B.ZD3-ISNULL(A.ZD3,0))+
ABS(B.ZD4-ISNULL(A.ZD4,0))合計
FROM @B B LEFT JOIN @A A ON A.CLID=B.CLID
/*CLID ZD1 ZD2 ZD3 ZD4 合計
----------- ----------- ----------- ----------- ----------- -----------
813 1 9 1 2 13
625 1 5 3 4 13
702 3 7 4 6 20
*/
select yl.CLCJ,yl.CLID
,case when yl.ZD1 >= isnull(ck.ZD1,0) then yl.ZD1 - isnull(ck.ZD1,0) end as ZD1
,case when yl.ZD2 >= isnull(ck.ZD2,0) then yl.ZD2 - isnull(ck.ZD2,0) end as ZD2
,case when yl.ZD3 >= isnull(ck.ZD3,0) then yl.ZD3 - isnull(ck.ZD3,0) end as ZD3
,case when yl.ZD4 >= isnull(ck.ZD4,0) then yl.ZD4 - isnull(ck.ZD4,0) end as ZD4
,case when yl.ZD1 >= isnull(ck.ZD1,0) then yl.ZD1 - isnull(ck.ZD1,0) else 0 end +
case when yl.ZD2 >= isnull(ck.ZD2,0) then yl.ZD2 - isnull(ck.ZD2,0) else 0 end +
case when yl.ZD3 >= isnull(ck.ZD3,0) then yl.ZD3 - isnull(ck.ZD3,0) else 0 end +
case when yl.ZD4 >= isnull(ck.ZD4,0) then yl.ZD4 - isnull(ck.ZD4,0) else 0 end as heji
from yl left join ck
on yl.clid=ck.clid
select ...
from yl left join ck on yl.clid=ck.clid
where ....