WITH ROLLUP Требуется SUM в Select?

Никто не смог помочь мне с моим первоначальным вопросом (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 из ОДНОЙ строки? Большое спасибо за любую помощь, которую вы можете предоставить!


person blacksaibot    schedule 07.12.2016    source источник
comment
Предположительно базовый набор результатов имеет две строки со значением 98.   -  person Martin Smith    schedule 07.12.2016
comment
Да, это так... спасибо, что указали на это. Поэтому я думаю, что результат, предоставленный моим коллегой, правильный. А вот и минусы   -  person blacksaibot    schedule 07.12.2016


Ответы (1)


Как заметил Мартин Смит,

«Предположительно базовый набор результатов имеет две строки с 98»

... и именно поэтому я ненавижу наследование проектов.

person blacksaibot    schedule 07.12.2016