2014-03-30 46 views
1

我有這個表...TSQL:和之前和之後的今天按客戶

TABLE [orders] (
    [customer_ID] uniqueidentifier, 
    [salary] money, 
    [enter_into_force_date] date 
) 

我需要按「CUSTOMER_ID」和今天之前的工資總和(enter_into_force_date < = GETDATE)和工資今天之後的總和(enter_into_force_date> getdate) - 也就是說,我需要知道每個客戶,我們到目前爲止的薪水總額以及未來的薪水。

所以結果應該像...

customer_ID       before_today after_today 
7FBF73B0-6F18-488B-8BEA-CB1968473BBE  20,100.00 10,211.00 
679329F5-D7BB-44BE-9E76-F2F02DE5FD00  1,500.10 30.100,10 

我怎麼會做出這樣的TSQL?

回答

4

您可以使用此查詢

select customer_id, 
    sum(case when enter_into_force_date <= GETDATE() then salary else 0 end) before_today, 
    sum(case when enter_into_force_date <= GETDATE() then 0 else salary end) after_today 
from orders 
group by customer_id 
+1

完美..感謝了很多 - 我已經學到新的東西今天...謝謝。 :) – MojoDK

+1

+1。 。 。我想指出的是,使用相同的條件並交換'then'和'else'子句可確保'NULL'也被計算在內。 –