--如果你用的是WITH CUBE,結果集的后面還會多出兩條(如果你也只是輸入示例中的幾行數據的話):
NULL A 14
NULL B 16
咦!奇怪,結果中怎么有那么多“NULL”值?哈,別急,這幾行正是我們所要的匯總數據行,不難看出:
01 NULL 13正是對編碼為01的所有倉庫中的數量的匯總;02 NULL 17是對編碼為02的所有倉庫的數量的匯總;
NULL NULL 30是對所有資料行數量的匯總。
如何?答案出來了吧?是不是很簡單呢?當然,上面還有點美中不足,那就是有好多“NULL”的存在。如何去掉這些無意義的NULL呢?下面我們再進行優化。
1、用Grouping替換NULL值
SELECT CASE WHEN (GROUPING(編碼) = 1) THEN ’ALL’
ELSE ISNULL(編碼, ’UNKNOWN’)
END AS 編碼,
CASE WHEN (GROUPING(倉庫) = 1) THEN ’ALL’
ELSE ISNULL(倉庫, ’UNKNOWN’)
END AS 倉庫,
SUM(數量) AS 數量
FROM A
GROUP BY 編碼, 倉庫 WITH ROLLUP
--適當的運用Case函數
結果我這里就不寫了,就是把上面的“NULL”值全部換成“ALL”字符串
2、利用程序做進一步的優化
//通常為了顯示上的需要,我們必須對以上SQL語句生成的結果做一些優化,下面給出自然語言描述:
文章來源于領測軟件測試網 http://www.kjueaiud.com/