这是我的查询
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
这是我的结果:
预期结果应如下:
是否可以在SQL中完成?可以帮我查询吗?
答案 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