简体   繁体   English

如何在sql查询中添加表底部的行?

[英]How to add row at the bottom of table in sql query?

I have select query and I want add row bottom of table which contains sum of debit and credit column. 我有选择查询,我想添加表格的行底部,其中包含借方和贷方列的总和。

My SQL query is like: 我的SQL查询如下:

SELECT * 
FROM 
    (SELECT 
        so.OrderDate ,'Sales' As VoucherType,'' AS VoucherNo,
        a.Total As Debit, NULL As Credit 
    FROM SalesOrder so 
    INNER JOIN
       (SELECT 
           SalesOrderId, SUM(SubTotal) AS Total 
        FROM SalesOrderDetails 
        GROUP BY SalesOrderId) AS a ON so.SalesOrderId = a.SalesOrderId

        UNION ALL

        SELECT  
           v.VoucherDate As OrderDate, 'Receipt' AS VoucherType,
           v.VoucherNumber AS VoucherNo, NULL AS Debit,
           v.Amount AS Credit 
        FROM Vouchers v) AS ledger 
ORDER BY 
     OrderDate ASC

My query output is in below image. 我的查询输出在下面的图像中。

在这里,我附上了查询结果的图像,我希望添加表格的行尾。它行包含借方和贷方的总和。

You can do this with grouping sets . 您可以使用grouping sets执行此操作。 First, rearrange the query a bit to be an aggregation query. 首先,将查询重新排列为聚合查询。 The aggregations don't do anything, but they are needed for the total. 聚合不做任何事情,但总数需要它们。

Then use group by grouping sets () to define the various groups: 然后使用group by grouping sets ()来定义各个组:

SELECT OrderDate, VoucherType, VoucherNo, sum(Debit) as Debit, sum(Credit) as Credit
FROM (SELECT so.OrderDate ,'Sales' As VoucherType, '' AS VoucherNo,
             a.Total As Debit, NULL As Credit
      from SalesOrder so inner join
           (SELECT SalesOrderId,sum(SubTotal) AS Total
            FROM SalesOrderDetails 
            group by SalesOrderId)as a on so.SalesOrderId = a.SalesOrderId
            UNION ALL
            SELECT v.VoucherDate As OrderDate, 'Receipt' AS VoucherType,
                   v.VoucherNumber AS VoucherNo,NULL AS Debit ,
                   v.Amount AS Credit from Vouchers v
           ) ledger
GROUP BY GROUPING SETS ((OrderDate, VoucherType, VoucherNo), ())
ORDER BY OrderDate ASC

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM