我有以下嵌套查詢SQL服務器:Case語句總和
select
sum(c.seats) as countPerfs, b.program, b.Prog_id
from
#LT_TEMP TableP
join
C_PROGRAM b on TableP.program_id = b.Prog_id
join
lt_data c on b.Program = c.program
join
LTR_BUDGET_REF a on TableP.program_id = a.ProgramID
where
a.Participants = 'Y'
and fyear = 2016
group by
b.Program, b.Prog_id
它返回的輸出,看起來像這樣:
program_id season program performance workshops artists_sess participants audience
6 2016 LU: NULL NULL NULL NULL NULL
7 2016 NC: NULL NULL NULL NULL NULL
11 2016 AC: NULL NULL NULL NULL NULL
12 2016 PD: NULL NULL NULL NULL NULL
19 2016 MC: NULL NULL NULL NULL NULL
每個項目都有不同的邏輯 - 所以如果我想計算讓我們說參與者。但是當程序是MC時,我們只想返回/求和某些數據。但是當程序是LU時,我們要計算所有的數據。等等。 如何構建該案例陳述。
例如,如果程序是MC,我們希望將c.seats(來自lt_data),但只有價格= 800的地方求和。但是如果程序是LU,我們想爲所有價格求和。如果程序是PD,我們想要在價格爲800,500和300的地方求和。事情就是這樣。它是一個個案的基礎,但我不知道如何構造它。
在此先感謝。
這是一個完整的查詢
UPDATE
#LT_TEMP
SET
program = h.Program,
participants = h.countPerfs
FROM
(
select sum(c.seats) as countPerfs, b.program, b.Prog_id
from #LT_TEMP TableP
join C_PROGRAM b on TableP.program_id = b.Prog_id
join lt_data c on b.Program = c.program
join LTR_BUDGET_REF a on TableP.program_id = a.ProgramID
where a.Participants = 'Y'
and fyear = 2016
group by b.Program, b.Prog_id
) h
where h.Prog_id = #LT_TEMP.program_id
and h.Prog_id not in (27, 28, 29)
您的輸出不匹配您的查詢 – TheGameiswar
一些'外部應用程序'應該做的伎倆。如果你想要實際的代碼,需要更多關於個案情況的細節。 – TTeeple
我已更新查詢以添加完整的sql/update語句。但問題出現在我想要更新總和的中間部分 - 一系列情況。謝謝。 – YelizavetaYR