簡體   English   中英

如何在案例陳述中求和

[英]How to SUM in case statement

如何從列列表中選擇第一個非零值的總和-而不將列包括在group by中。 這是我編寫的查詢,但是我必須將所有這些列包括在分組依據中(我不想這樣做)

Select CpnyID,H.Acct,A.Descr, 
case when H.YtdBal12 > 0 then sum(H.YtdBal12)
     when H.YtdBal11 > 0 then sum(H.YtdBal06)
     when H.YtdBal10 > 0 then sum(H.YtdBal10)
     when H.YtdBal09 > 0 then sum(H.YtdBal09)
     when H.YtdBal08 > 0 then sum(H.YtdBal08)
     when H.YtdBal07 > 0 then sum(H.YtdBal07)
     when H.YtdBal06 > 0 then sum(H.YtdBal06)
     when H.YtdBal05 > 0 then sum(H.YtdBal05)
     when H.YtdBal04> 0 then sum(H.YtdBal04)
     when H.YtdBal03 > 0 then sum(H.YtdBal03)
     when H.YtdBal02  > 0 then sum(H.YtdBal02)
     when H.YtdBal01 > 0 then sum(H.YtdBal01)
     when H.YtdBal00 > 0 then sum(H.YtdBal00)
END
from AcctHist H,Account A,PSSFAAssetClass C
where A.Acct = H.Acct
and (H.Acct = C.Acct or H.Acct  = C.AccDeprAcct) 
and FiscYr = 2013
group by CpnyID,H.Acct,A.Descr
order by CpnyID,H.Acct

嘗試這個:

SUM(COALESCE(H.YtdBal12, H.YtdBal11, H.YtdBal10...)

如果值實際上是0,而不僅僅是空,則可能需要在每列上使用NULLIF()。 喜歡:

SUM(COALESCE(NULLIF(H.YtdBal12,0),NULLIF(H.YtdBal11,0), etc...)

您想將sum()移動到案例之外:

Select CpnyID, H.Acct, A.Descr, 
Sum(case when H.YtdBal12 > 0 then H.YtdBal12
     when H.YtdBal11 > 0 then H.YtdBal06
     when H.YtdBal10 > 0 then H.YtdBal10
     when H.YtdBal09 > 0 then H.YtdBal09
     when H.YtdBal08 > 0 then H.YtdBal08
     when H.YtdBal07 > 0 then H.YtdBal07
     when H.YtdBal06 > 0 then H.YtdBal06
     when H.YtdBal05 > 0 then H.YtdBal05
     when H.YtdBal04> 0 then H.YtdBal04
     when H.YtdBal03 > 0 then H.YtdBal03
     when H.YtdBal02  > 0 then H.YtdBal02
     when H.YtdBal01 > 0 then H.YtdBal01
     when H.YtdBal00 > 0 then H.YtdBal00
END)
from AcctHist H 
join Account A
    On A.Acct = H.Acct
JOIN PSSFAAssetClass C
    on (H.Acct = C.Acct or H.Acct  = C.AccDeprAcct) 
where FiscYr = 2013
group by CpnyID, H.Acct, A.Descr
order by CpnyID, H.Acct;

我還修復了join語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM