SQL 没有小计的总计
SQL Grand total without subtotals
我正在 Orderwise 中制作一份大型 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 版本,但如果有帮助,google 告诉我 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), () )
我正在 Orderwise 中制作一份大型 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 版本,但如果有帮助,google 告诉我 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), () )