通过平衡获得复杂的结果

Getting Complex Result With Balance

我有两个 tables IssueReceived。我想得到同一行问题的结果。

问题table:

NO LCODE PCS
1 L0001 10
2 L0002 25
3 L0003 75
4 L0004 12
5 L0005 15

收到table:

NO LCODE PCS
1 L0001 5
2 L0001 5
3 L0003 48
4 L0003 12
5 L0003 15

想要的结果:

NO LCODE ISSPCS RECPCS BAL
1 L0001 10 5 5
2 L0001 0 5 0
3 L0003 75 48 27
4 L0003 0 12 15
5 L0003 0 15 0
6 L0004 12 0 12
7 L0005 15 0 15
SELECT ROW_NUMBER() OVER(PARTITION BY i.LCODE ORDER BY i.LCODE) as NO,
i.LCODE,i.PCS as ISSPCS,r.PCS as RECPCS,(i.PCS-r.PCS) as BAL 
FROM Issue i
LEFT JOIN Received  r ON i.LCODE = r.LCODE

找到获得此结果的最佳方法谢谢。

试试这个代码:

SELECT  ROW_NUMBER() OVER ( ORDER BY i.LCODE ASC, RunninngSum ASC) AS [NO]
,       i.LCODE
,       CASE WHEN RunninngSum > r.PCS THEN 0 ELSE i.PCS 
        END AS ISSPCS
,       ISNULL( r.PCS, 0) AS RECPCS
,       i.PCS - ISNULL( RunninngSum, 0) as BAL
FROM Issue i
LEFT JOIN Received r ON i.LCODE = r.LCODE 
CROSS APPLY (
    SELECT SUM( r1.PCS) AS RunninngSum 
    FROM Received r1 
    WHERE r1.LCODE = r.LCODE AND r1.[NO] <= r.[NO]
)x