我有兩個表 - 檢查和策略。下面是結構。爲了清楚起見,這是最起碼的結構兩列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