簡體   English   中英

案情總結

[英]Sum case statement

下面的SQL返回“無法對包含聚合或子查詢的表達式執行聚合函數。”,有人可以幫忙嗎?

SELECT 
sum(case when Frequency = 'Monthly' then ISNULL(SUM(Amount),0.0) else 0 end) + 
sum(case when Frequency = '4 Weekly' then ISNULL(SUM(Amount),0.0) / 2 else 0 end) +
sum(case when Frequency = 'Fortnightly' then ISNULL(SUM(Amount),0.0) / 3 else 0 end) +
sum(case when Frequency = 'Weekly' then ISNULL(SUM(Amount),0.0) / 5 else 0 end) 
FROM TableWHERE Id = 1

如果需要條件聚合,則只需要一個sum()

SELECT sum(case when Frequency = 'Monthly' then Amount else 0 end) + 
       sum(case when Frequency = '4 Weekly' then Amount / 2 else 0 end) +
       sum(case when Frequency = 'Fortnightly' then Amount / 3 else 0 end) +
       sum(case when Frequency = 'Weekly' then Amount,0.0) / 5 else 0 end) 
FROM Table
WHERE Id = 1;

我想你想做些類似的事情

sum(case when Frequency = 'Monthly' then ISNULL(Amount,0.0) else 0 end)
SELECT 
sum(case when Frequency = 'Monthly'     then ISNULL(Amount,0.0)     else 0 end) + 
sum(case when Frequency = '4 Weekly'    then ISNULL(Amount,0.0) / 2 else 0 end) +
sum(case when Frequency = 'Fortnightly' then ISNULL(Amount,0.0) / 3 else 0 end) +
sum(case when Frequency = 'Weekly'      then ISNULL(Amount,0.0) / 5 else 0 end) 
FROM Table
WHERE Id = 1

暫無
暫無

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

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