我確信這已被多次覆蓋,請原諒我的重複。我有一個可以正常工作的查詢,但在一個選擇中目前有6個CASE語句。有人提到,通過將我所有的WHEN條件放在一個CASE中,將會得到最佳優化。然而,我無法做到這一點單個CASE語句中的多個列
select right(RTRIM(region),5) as cell_id,
sum(CASE WHEN LEFT(cparty,3) in ('999','998','997') THEN chargeduration/60 else 0 END) AS OnNet_Minutes,
sum(CASE WHEN LEFT(cparty,3) in ('996','995') THEN chargeduration/60 else 0 END) AS OffNet_C_Minutes,
sum(CASE WHEN LEFT(cparty,3) in ('994','993','992') THEN chargeduration/60 else 0 END) AS OffNet_A_Minutes,
sum(CASE WHEN LEFT(cparty,3) in ('991','990') THEN chargeduration/60 else 0 END) AS OffNet_S_Minutes,
sum(CASE WHEN LEFT(cparty,2) = '00' THEN chargeduration/60 else 0 END) AS OffNet_T_Minutes,
sum(CASE WHEN len(cparty) < 6 and LEFT(cparty,1) <> 0 THEN chargeduration/60 else 0 END) AS SC_Minutes
from August.dbo.cdr20130818
where CHARGEDURATION > 0 and ISNULL(region,'''')<>'''' and LEN(region) > 5
group by right(RTRIM(region),5)
order by right(RTRIM(region),5) asc
您是否希望爲輸出中的電荷持續時間計算一個單獨的求和列,還是六個? –
你應該問這個人他們的意思。您的查詢看起來很好。 –
單個'CASE' *表達*意味着你會得到一個單獨的列,對你有用嗎? – Lamak