sql - 没有小计的 SQL 总计
问题描述
我正在按顺序制作一个大型 SQL 报告,非常粗略地简化如下;
SELECT Supplier.SupplierName, POHeader.PODate, POHeader.PORef, POLine.LineID, SUM(Subquery.Val)
FROM Supplier INNER JOIN POHeader ON POheader.supplier = Supplier.SupplierID
INNER JOIN POLine ON POLine.HeaderID = POHeader.PO_ID
INNER JOIN Subquery on Subquery.POLine = POLine.Line_ID
GROUP BY Supplier.SupplierName, POHeader.PODate, POHeader.PORef, POLine.Line_ID
我希望在底部有一个总计,而不是在整个报告中点缀一堆小计 - 因此我认为我不能使用ROLLUP
. 当然,其中Subquery
有一个子查询,实际上会有十二个,而且都非常复杂,所以我想尽可能避免将UNION
所有内容汇总起来。有没有其他方法可以在报表底部放置总计行而不使用小计?
不完全确定 SQL 版本,但如果有帮助,谷歌告诉我Microsoft SQL Server Express 或 SQL Server Standard 可以与 OrderWise 一起使用
解决方案
使用GROUPING SETS
:
SELECT Supplier.SupplierName, POHeader.PODate, POHeader.PORef, POLine.LineID, SUM(Subquery.Val)
FROM Supplier INNER JOIN
POHeader
ON POheader.supplier = Supplier.SupplierID JOIN
POLine
ON POLine.HeaderID = POHeader.PO_ID JOIN
Subquery
ON Subquery.POLine = POLine.Line_ID
GROUP BY GROUPING SETS ( (Supplier.SupplierName, POHeader.PODate, POHeader.PORef, POLine.Line_ID), () )
推荐阅读
- postgresql - Postgresql:为什么批量插入后没有自动更新id序列
- reactjs - 如何从 React 中的对象中选择多个属性
- python - Python如何将字符串分成几个阶段
- react-native - React Native - 使用样式化组件样式化按钮
- data-structures - 如果所有查找操作都在不相交集中的所有并集之前完成,那么总体时间复杂度是多少?
- java - 转换地图
> 列出 在 Java 中? - puppeteer - 木偶师(PuppeteerSharp)怎么点击?
- regex - Ansible 正则表达式替换字符串
- swift - Swift 泛型嵌套
- machine-learning - 归纳无监督节点嵌入