У меня есть запрос, подобный следующему:
SELECT CASE WHEN (GROUPING(Name) = 1) THEN 'All' ELSE Name END AS Name,
CASE WHEN (GROUPING(Type) = 1) THEN 'All' ELSE Type END AS Type,
sum(quantity) AS [Quantity],
CAST(sum(quantity) * (SELECT QuantityMultiplier FROM QuantityMultipliers WHERE a = t.b) AS DECIMAL(18,2)) AS Multiplied Quantity
FROM @Table t
GROUP BY Name, Type WITH ROLLUP
Я пытаюсь вернуть список Имен, Типов, суммированного количества и суммированного количества, умноженного на произвольное число. Пока все хорошо. Мне также нужно вернуть итоговую строку для каждого имени и типа, например, следующее
Name Type Quantity Multiplied Quantity
------- --------- ----------- -------------------
a 1 2 4
a 2 3 3
a ALL 5 7
b 1 6 12
b 2 1 1
b ALL 7 13
ALL ALL 24 40
Первые 3 столбца в порядке. Я получаю нулевые значения в строках сворачивания для умноженного количества все же. Единственная причина, по которой я могу думать, что это происходит, заключается в том, что SQL не распознает последний столбец как агрегат, поскольку я умножил его на что-то.
Можно ли как-то обойти это без запутанных вещей?
Я вернусь к временным таблицам, если это невозможно.