【问题标题】:Add total to group将总计添加到组
【发布时间】:2010-12-29 21:35:16
【问题描述】:
我有一个订单详情表。
我想要做的是创建 1 个查询来显示
OrderNumber | SKU | QTY | Price | Line Total |
1 SKU1 1 10.00 10.00
1 ---- 0 0.00 10.00
2 SKU1 2 10.00 20.00
2 SKU2 3 1.50 4.50
2 ---- 0 0.00 24.50
我的意思是我需要为每个添加另一行
订单总金额导出到文本文件。
我有 SQL Server 2005
谢谢。
【问题讨论】:
标签:
sql
sql-server-2005
group-by
sum
【解决方案1】:
额外的列很简单,只需在定义为两个现有属性的乘积的 sql 中创建另一个输出列
Select OrderNumber, SKU, QTY, Price, Qty * Price as LineTotal
From Table ...
第二部分,添加小计行,可以使用关键字Rollup 或与聚合查询联合来完成
Select OrderNumber, SKU, QTY, Price,
Qty * Price as LineTotal
From Table
Union
Select OrderNumber, null SKU, null Qty, null Price,
Sum( Qty * Price ) as LineTotal
From Table
Group By OrderNumber
Order By OrderNumber, Case When SKU Is Null then 1 Else 0 End
【解决方案2】:
我不确定在单个 SQL 中完成所有这些是否是个好主意,但您可以尝试使用联合:
SELECT *
FROM (
SELECT ordernumber, sku, qty, price, qty*price line_total
FROM order_details
UNION
SELECT ordernumber, '---' sku, 0 qty, 0 price, SUM(qty*price)
FROM order_details
GROUP BY ordernumber
)
ORDER BY ordernumber, sku
虽然没试过。