带汇总的SQL查询

时间:2020-06-19 05:33:35

标签: sql sql-server

这是我的查询

select X.Memo, X.Month, Format(sum(X.[Total Sales S$]),'#,0.00') as [Rental Sales $]
    , Format(sum(X.[Net GP S$]),'#,0.00') as [Rental GP $]
from Data X
group by X.Month,X.Memo

这是我的结果:

enter image description here

预期结果应如下:

enter image description here

是否可以在SQL中完成?可以帮我查询吗?

1 个答案:

答案 0 :(得分:1)

一种方法是使用case语句并获取您提到的结果。 您可以通过类似的方式添加要求的列并获取输出。

SELECT MONTH,
  sum(CASE WHEN Memo = 'Rental' THEN sales$ END) Rental_$,
  sum(CASE WHEN Memo = 'Rental' THEN GP$ END) Rental_GP,
  sum(CASE WHEN Memo = 'Sales' THEN sales$ END) Sales_$,
  sum(CASE WHEN Memo = 'Sales' THEN GP$ END) Sales_GP
FROM tablea
GROUP BY MONTH
SELECT MONTH,
  Format(sum(CASE WHEN Memo = 'Rental' THEN (X.[Total Sales S$]) END), '#,0.00') Rental_$,
  Format(sum(CASE WHEN Memo = 'Rental' THEN (X.[Net GP S$]) END), '#,0.00') Rental_GP,
  Format(sum(CASE WHEN Memo = 'Sales' THEN (X.[Total Sales S$]) END), '#,0.00') Sales_$,
  Format(sum(CASE WHEN Memo = 'Sales' THEN (X.[Net GP S$]) END), '#,0.00') Sales_GP,
  Format((sum(CASE WHEN Memo = 'Rental' THEN (X.[Total Sales S$]) END) + sum(CASE WHEN Memo = 'Sales' THEN (X.[Total Sales S$]) END)), '#,0.00') [Total Sales S$],
  Format((sum(CASE WHEN Memo = 'Rental' THEN (X.[Net GP S$]) END) + sum(CASE WHEN Memo = 'Sales' THEN (X.[Net GP S$]) END)), '#,0.00') [Total GP S$]
FROM DATA X
GROUP BY MONTH WITH ROLLUP
ORDER BY SUM(X.MN) ASC