【问题标题】:SQL Grand total without subtotals没有小计的 SQL 总计
【发布时间】:2021-03-10 09:51:01
【问题描述】:

我正在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 版本,但如果有帮助,谷歌告诉我 Microsoft SQL Server Express 或 SQL Server Standard 可以与 OrderWise 一起使用

【问题讨论】:

    标签: sql sql-server rollup


    【解决方案1】:

    使用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), () )
    

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 2023-03-19
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多