В настоящее время я запрашиваю таблицу 4 раза, используя разные критерии, а затем использую левые соединения как часть более крупного запроса, чтобы вернуть все данные. Более крупный запрос выполняется не особенно быстро, и я уверен, что мой нынешний подход неэффективен.
Что мне интересно, так это то, возможно ли каким-либо образом использовать оператор CASE для увеличения одного из 4 столбцов. Мои 4 запроса в настоящее время:
SELECT ts.department,
Sum([hours]) AS ChargeableTimeYTD
FROM bwbfiles.sos.timesummary ts
WHERE category = 'C'
AND [year] = '2019'
GROUP BY department
SELECT ts.department,
Sum([hours]) AS ChargeableTimeMTD
FROM bwbfiles.sos.timesummary ts
WHERE category = 'C'
AND [year] = '2019'
AND [period] = 4
GROUP BY department
SELECT ts.department,
Sum([hours]) AS NonChargeableTimeProBono
FROM bwbfiles.sos.timesummary ts
WHERE category = 'NC'
AND ( [act_code] = '001N'
OR [act_code] = '00N6' )
AND [year] = '2019'
GROUP BY department
SELECT ts.department,
Sum([hours]) AS NonChargeableTimeNonProBono
FROM bwbfiles.sos.timesummary ts
WHERE category = 'NC'
AND ( [act_code] <> '001N'
AND [act_code] <> '00N6' )
AND [year] = '2019'
GROUP BY department
Целью было бы получить результат запроса с 5 столбцами
Отдел, ChargeableTimeYTD, ChargeableTimeMTD, NonChargeableTimeProBono, NonChargeableTimeNonProBono
Или вместо CASE я бы удалил группу по отделам из каждого бита и получил бы запрос, который выдал 3 столбца
Отдел, Часы, Категория (где Категория - ChargeableTimeYTD / ChargeableTimeMTD и т. Д. ... и т. Д.), А затем разделите это на 5 столбцов.
Заранее спасибо!