我想用ROLLUP函數運行查詢。SQL Server查詢GROUPING與ROLLUP
假設我的查詢是:
SELECT GEN.orgId,GEN.locId,GEN.rvcId
GEN.rvcName,GEN.menuItemID,GEN.menuItemName , SUM(salesTotal) as
salesTotal FROM GEN GROUP BY GEN.orgId,GEN.locId,
GEN.rvcName,GEN.menuItemID,GEN.menuItemName ORDER BY GEN.menuItemName
什麼這個查詢的輸出是:
orgId locId rvcName menuItemID menuItemName salesTotal 10200 10002 Sydney Retail 10870 Cho Milk Shake 7.500000 10200 10002 Sydney Wholesale 10870 Cho Milk Shake 7.500000 10200 10002 Sydney Retail 10850 Berry Milk Shake 10.920000 10200 10002 Sydney Wholesale 10850 Berry Milk Shake 10.920000 10200 10002 Sydney Retail 10898 Apple Custard 5.460000 10200 10002 Sydney Wholesale 10898 Apple Custard 5.460000
當我申請的分組和ROLLUP到我的查詢:
個SELECT GEN.orgId,GEN.locId, GEN.menuItemID, GEN.menuItemName,
CASE WHEN GROUPING(GEN.rvcName) = 1
THEN 'Grand Total'
ELSE GEN.rvcName END as rvcName
,SUM(salesTotal) as salesTotal
GROUP BY GEN.orgId,GEN.locId, GEN.rvcId, GEN.rvcName, GEN.menuItemID, GEN.menuItemName WITH ROLLUP
ORDER BY GEN.menuItemID asc
這個查詢輸出(僅用於漿果奶昔):
orgId locId menuItemID menuItemName rvcName salesTotal
10200 10002 NULL NULL Sydney Retail 10.920000
10200 10002 NULL NULL Grand Total 10.920000
10200 10002 NULL NULL Sydney Wholesale 10.920000
10200 10002 NULL NULL Grand Total 10.920000
10200 10002 NULL NULL Grand Total 21.840000
10200 NULL NULL NULL Grand Total 21.840000
NULL NULL NULL NULL Grand Total 21.840000
10200 10002 10850 Berry Milk Shake Sydney Wholesale 10.920000
10200 10002 10850 NULL Sydney Wholesale 10.920000
10200 10002 10850 Berry Milk Shake Sydney Retail 10.920000
10200 10002 10850 NULL Sydney Retail 10.920000
我的問題是:我有這個查詢造成了太多不必要的數據。我如何改進查詢並生成如下所示的內容。提前致謝。
我想實現的是:
orgId locId rvcName menuItemID menuItemName salesTotal 10200 10002 Sydney Retail 10870 Cho Milk Shake 7.500000 10200 10002 Sydney Wholesale 10870 Cho Milk Shake 7.500000 10200 10002 ALL 10870 Cho Milk Shake 15.000000 10200 10002 Sydney Retail 10850 Berry Milk Shake 10.920000 10200 10002 Sydney Wholesale 10850 Berry Milk Shake 10.920000 10200 10002 ALL 10850 Berry Milk Shake 21.840000 10200 10002 Sydney Retail 10898 Apple Custard 5.460000 10200 10002 Sydney Wholesale 10898 Apple Custard 5.460000 10200 10002 ALL 10898 Apple Custard 10.920000