添加总计到组

时间:2009-12-24 20:18:36

标签: sql sql-server-2005 group-by sum

我有一份订单明细表。

我想要做的是创建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

谢谢。

2 个答案:

答案 0 :(得分:4)

额外列很简单,只需在sql中创建另一个输出列,该列定义为两个exsting属性的乘积

  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

答案 1 :(得分:1)

我不确定在单个SQL中做这一切是不是一个好主意,但你可以尝试使用union:

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

虽然没试过。