我正在尝试使用 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
当我将 GROUPING 和 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
此查询输出(仅适用于 Berry Milk Shake):
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