[英]Add row to SQL query results with totals of certain columns
我有一个SQL查询
select * from orderTable
返回:
我想让查询返回具有orderId ='Total'的其他行,以及GrossAmt,Payments,NetAmt的总和,其余字段为空,如下所示:
我试过的
select isnull(OrderId, 'Total') as OrderId, GrossAmt
from (
select OrderId, SUM(GrossAmt) as GrossAmt
from orderTable
group by OrderId with rollup
) as OT
它将返回具有Total和GrossAmt的总和的最后一行,但是当我尝试添加时,请说出StoreId,例如:
select isnull(OrderId, 'Total') as OrderId, GrossAmt, StoreId
from (
select OrderId, SUM(GrossAmt) as GrossAmt, StoreId
from orderTable
group by OrderId, StoreId with rollup
) as OT
然后,我得到的结果是每行重复的结果的两倍,但StoreId为空值。
我只是想在上面的查询中切换OrderId和StoreId的位置,这给了我最接近的结果。 我正好有我想要的东西,底部只有2行,其中一个行的StoreId为空。
您可以使用UNION使其成为单个表:
select * from
(
select cast(OrderId as Varchar) as OrderId, Custname, GrossAmt, Payments, NetAmt, StoreId, StaffName
from orderTable
UNION
(select 'Total' as OrderId, Null as Custname,
Sum(GrossAmt) As GrossAmt,
Sum(Payments) As Payments,
Sum(NetAmt) As NetAmt, Null as StoreId, Null as StaffName
from orderTable)
) a
请注意,强制转换在OrderId列中包含单词Total fit
SELECT ISNULL(OrderId, 'Total') as OrderId, GrossAmt, NULL AS storeId
FROM (
SELECT OrderId, SUM(GrossAmt) as GrossAmt
FROM orderTable
GROUP BY
OrderId WITH ROLLUP
) AS OT
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.