2012-10-23 101 views
2

基于日期T-SQL CASE /子查询

SELECT 
    SUM(CASE WHEN date ='2012-10-31' then Amount ELSE 0 END) AS [Amount], 
    SUM(CASE WHEN date ='2012-10-31' then Discount1 ELSE 0 END) AS [Discount 1], 
    SUM(CASE WHEN date ='2012-10-31' then Discount2 ELSE 0 END) AS [Discount 2] 
    SUM(CASE WHEN date ='2012-10-31' then Amount - Discount1 - Discount2 ELSE 0 END) AS 
[Total Amount] 
FROM 
    Orders 

目前的结果我有一个T-SQL查询低于返回结果:

Amount Discount1 Discount2 Total 
-------------------------------------- 
100.00 5.00  5.00  90.00 

我想有这样的运行和显示/按月分组。有任何想法吗?

      Amount Discount1 Discount2 Total 
         ------------------------------------------- 
    October    100.00  5.00  5.00  90.00 
    November    100.00 10.00  5.00  85.00 
    December    200.00 20.00  10.00  170.00 
+0

组...你是如何聚集?总和,平均? –

回答

5

如果你需要按月分组,你可以尝试一些与此类似:

select datename(mm, date) month, 
    sum(amount) amount, 
    sum(discount1) discount1, 
    sum(discount2) discount2, 
    sum(amount - discount1 - discount2) Total 
from orders 
group by datename(mm, date) 

按月查看SQL Fiddle with Demo

+0

谢谢。感谢帮助 – steve