[英]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.