2013-02-18 139 views
0

我在SQL Server 2008中的表格式如下(簡化格式):SQL - 樞軸/ Unpivot?

Date Miles Cost

我想得到這樣

  Previous Week  Current Week Variance 
Miles   

Cost

結果我怎樣才能做到這一點?我是否需要pivot/unpivot或者什麼是實現這個目標的最簡單和最有效的方法。謝謝。

+0

什麼不喜歡你需要一個支點爲此不惜一切。 – Kermit 2013-02-18 22:16:23

+0

那我該如何實現呢?寧願有一個更簡單的SQL沒有多個聯合和聯合 – devSuper 2013-02-18 22:18:28

回答

0
SELECT 'Miles' AS Type, SUM(CASE WHEN date = lastweek THEN miles ELSE 0 END) as lastweek 
, SUM(CASE WHEN date = thisweek THEN miles ELSE 0 END) as thisweek 
SUM(CASE WHEN date = lastweek THEN miles ELSE 0 END) - SUM(CASE WHEN date = thisweek THEN miles ELSE 0 END) as variance 
FROM yourtable 
UNION 
SELECT 'Cost' AS Type, SUM(CASE WHEN date = lastweek THEN cost ELSE 0 END) as lastweek 
, SUM(CASE WHEN date = thisweek THEN cost ELSE 0 END) as thisweek 
SUM(CASE WHEN date = lastweek THEN cost ELSE 0 END) - SUM(CASE WHEN date = thisweek THEN cost ELSE 0 END) as variance 
FROM yourtable 

這是不是100%正確,但語法應該是正確的,應該讓你很接近好像你正在尋找

+0

你看起來很簡單。我從Joins開始,並認爲我最終會遇到難看的代碼。我可以看到它的工作,將在它的工作。謝謝:) – devSuper 2013-02-18 22:28:42

+0

我仍然會推薦使用'UNION ALL'和'UNION',因爲它更快。 – Kermit 2013-02-18 23:23:23