CUBE
и ROLLUP
очень полезны для работы с конечными и промежуточными агрегатами в одном кадре. Для этого типа вопроса CUBE был бы хорошо подходит, если бы были нужны итоговые и промежуточные итоги, так что на этот и аналогичные вопросы можно было бы ответить без дополнительных запросов из исходной таблицы. Я нашел CUBE очень полезным для избежания поездок в БД. Тем не менее, в случае, когда точные требования известны заранее, наиболее подходящим является выбор из одного целевого элемента (что было продемонстрировано @nate c).
DECLARE @T1 TABLE (total int, weekday int)
INSERT INTO @T1
SELECT COUNT(1), DATEPART(WEEKDAY,start_date)
FROM attend
WHERE empl_no = 12345
GROUP BY DATEPART(WEEKDAY,start_date) WITH CUBE
SELECT
(SELECT Total FROM @T1 WHERE weekday is NULL) AS total,
(SELECT SUM(weekday) FROM @T1 WHERE weekday = 2 or weekday = 6) AS subset
-- continue using @T1 or a table variable was seriously overkill