[英]SQL Case Statement with SUM Group
我知道一定有像我這樣的問題。 似乎我找不到問題,很抱歉提出這個問題。
以下是我的表格(SalesTransaction)
ID |SalesID |Amount |AmountReceived |OutStanding |Paid
2041 1000 600000 600000 0 1
2042 1000 1500000 2000000 -500000 1
2043 1000 900000 0 900000 0
2047 1002 300000 0 300000 0
在下面使用SQL查詢:
SELECT ID,
SalesID,
Amount,
AmountReceived,
OutStanding,
Paid,
(CASE
WHEN Paid = 0 THEN (SELECT SUM(OutStanding)
FROM SalesTransaction
WHERE Paid = 1 )
ELSE 0 END) AS BalanceLastSchedule
FROM dbo.SalesTransaction
GROUP BY ID, SalesID, Amount, AmountReceived, OutStanding, Paid
我得到如下結果:
ID |SalesID |Amount |AmountReceived |OutStanding |Paid |BalanceLastSch
2041 1000 600000 600000 0 1 0.00
2042 1000 1500000 2000000 -500000 1 0.00
2043 1000 900000 0 900000 0 -500000
2047 1002 300000 0 300000 0 -500000
我想得到的如下:
ID |SalesID |Amount |AmountReceived |OutStanding |Paid |BalanceLastSch
2041 1000 600000 600000 0 1 0.00
2042 1000 1500000 2000000 -500000 1 0.00
2043 1000 900000 0 900000 0 -500000
2047 1002 300000 0 300000 0 0.00
謝謝,我對此有所幫助。 謝謝。
您得到的答案是錯誤的,因為您尚未加入內部查詢來查找具有SalesId的總和。 試試下面的腳本
SELECT
SeqNo,
SalesID,
Amount,
AmountReceived,
OutStanding,
Paid,
ISNULL((CASE
WHEN Paid = 0 THEN (SELECT SUM(OutStanding)
FROM SalesTransaction
WHERE Paid = 1
AND SalesId = T.SalesId)
ELSE 0 END),0.00) AS BalanceLastSchedule
FROM SalesTransaction T;
我只是在游覽內部查詢中添加了以下設置,並刪除了“按條款”組
AND SalesId = T.SalesId
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.