SQL Server 如何建立SQL查询来解决以下问题?

rt4zxlrg  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(173)

我在下面提到了两个数据集,表A和表B,我正试图使用表A和表B将表C作为输出数据集,您能帮助我使用SQL查询来获得此输出吗我主要试图计算表C中DueAmount列,派生此列逻辑在计算列中提到
数据截图:TableA, TableB and Output screenshot
我曾考虑尝试将表A展开为每个期间的多行,然后将表A与表B联接的逻辑,但我正在寻找对大量ID更有效的逻辑。

pbpqsu0x

pbpqsu0x1#

下面将生成所需的结果:

SELECT p.PeriodId, CASE WHEN b.BAmt < a.AAmt THEN 0 ELSE b.BAmt - a.AAmt END AS DueAmt
FROM (SELECT PeriodId FROM TableA UNION SELECT PeriodId FROM TableB) p
CROSS APPLY (SELECT SUM(Amount) AS AAmt FROM TableA WHERE PeriodId <= p.PeriodId) a
CROSS APPLY (SELECT SUM(Amount) AS BAmt FROM TableB WHERE PeriodId <= p.PeriodId) b

相关问题