我有两个表 - 检查和策略。下面是结构。为了清楚起见,这是最起码的结构两列SQL DIfference
表名:检查
列: ChequeId。 ChequeNumber, 金额, LASTUPDATED
表名:政策
列策略ID, PolicyNumber, ChequeId, 金额, LASTUPDATED
我想有一个查询返回给我下面的
ChequeNumber,PolicyId,ChequeAmount,PolicyAmount,Difference
一张支票可以被映射到多个策略(一对多的关系) 现在,如果支票被匹配到说2个政策和这两个策略的量的总和大于支票金额越大,我应该看到其中的差别,但只适用于第二policy.It的假设,第一政策得到完全匹配的。(或许用最后更新列?)所以输出将
ChequeNumber PolicyNumber ChequeAmount PolicyAmount Difference
1 1 200 100 0
1 2 200 200 100
下面是我自己编写
SELECT chequeNumber AS chequeNumber
,COALESCE(p.policyNumber, '') AS PolicyNumber
,c.amount AS chequeamount
,p.Amount As PolicyAmount
,(c.Amount) - SUM(p.Amount) OVER (PARTITION BY c.ChequeID) AS Difference
FROM Cheque c
LEFT JOIN Policy AS p
ON p.ChequeId=c.ChequeId
GROUP BY chequeNumber, policyNumber,c.amount,p.Amount,c.ChequeID
这给了我在两个行(下表)中的差异,而不仅仅是映射的最后一个策略。
ChequeNumber PolicyNumber ChequeAmount PolicyAmount Difference
1 1 200 100 -100
1 2 200 200 -100
我正在使用SQL 2008 R2。
[这](http://stackoverflow.com/questions/9420173/sql-subtracting-a-depleting -valu电子行业)这个问题涉及消耗库存中多个批次的库存。听起来像是一个类似的问题。 – HABO