I am sure this has been reviewed many times, so please forgive my repetition. I have a query that works, but currently has 6 CASE statements in a single selection. Someone mentioned that it is best to optimize by putting all my WHEN conditions in one CASE. However, I cannot achieve this.
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
source share