我有類似以下的查詢:我總不受ROLLUP
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現在不會將最後一列識別爲聚合,現在我已經將它乘以某些東西。
我可以以某種方式解決這個問題,而不會讓事情變得過於複雜嗎?
如果無法完成,我將重新回到臨時表格。
我想,'t.b'要麼在GROUP BY中提及或聚合函數中。 – 2011-05-23 19:22:38