Никто не смог помочь мне с моим первоначальным вопросом (WITH ROLLUP производит только NULL< /а>)
С тех пор я нашел ЧАСТЬ решения. Я сократил свой запрос до следующего.
SELECT
wlc.WorkloadCategory
,wl.WorkloadMinutes
FROM
swam.WorkloadCategories wlc
INNER JOIN
swam.Workloads wl
ON wlc.WorkloadCategoryID = wl.WorkloadCategoryID
WHERE
wlc.WorkloadCategory = 'DI'
GROUP BY
wlc.WorkloadCategory
,wl.WorkloadMinutes WITH ROLLUP
Я получил следующий результат:
WorkloadCategory | WorkloadMinutes
--------------------|------------------
DI | 31
DI | 55
DI | 77
DI | 79
DI | 98
DI | 117
DI | NULL
NULL | NULL
Но я ожидал (всего 457, а всего NULL 457):
WorkloadCategory | WorkloadMinutes
--------------------|------------------
DI | 31
DI | 55
DI | 77
DI | 79
DI | 98
DI | 117
DI | 457
NULL | 457
Коллега предложил следующее изменение (добавление SUM). Он делает все правильно, кроме строки 5 (196 вместо 98, значение удваивается), и теперь общее значение составляет 555 вместо 457.
SELECT
wlc.WorkloadCategory
,SUM(wl.WorkloadMinutes) as WorkloadMinutes
FROM
swam.WorkloadCategories wlc
INNER JOIN
swam.Workloads wl
ON wlc.WorkloadCategoryID = wl.WorkloadCategoryID
WHERE
wlc.WorkloadCategory = 'DI'
GROUP BY
wlc.WorkloadCategory
,wl.WorkloadMinutes WITH ROLLUP
Результат:
WorkloadCategory | WorkloadMinutes
--------------------|------------------
DI | 31
DI | 55
DI | 77
DI | 79
DI | 196
DI | 117
DI | 555
NULL | 555
Может ли кто-нибудь объяснить, почему SUM частично обеспечивает то, что я хочу, но затем неправильно выбирает WorkloadMinutes из ОДНОЙ строки? Большое спасибо за любую помощь, которую вы можете предоставить!