2013-04-05 61 views
0

我一直在這裏抨擊我的頭靠在牆上幾個小時。我已經設法將所有需要的數據下載到1個表中,但我無法弄清楚如何編寫select語句,以便按照我的要求輸出。根據1列的值輸出多列的SQL查詢

基本上我有一個表:

ID| Date | Cost 
a 03/11 5 
a 02/11 4 
b 01/11 3 
b 04/11 7 

改變所述查詢列輸出的列是日期列。我希望能夠將所有ID組合在一起,每行包含與該ID相關的每個項目的ID和每個項目的成本,或者如果當月沒有項目(從1月1日起),則爲null

查詢

輸出:

ID| JAN |FEB | MARCH | APR | MAY | JUN | JUL |......| OCT | NOV | DEC 
a NULL 4  5  NULL NULL.................................NULL 
b 3 NULL NULL  7 NULL.................................NULL 

在正確的方向任何幫助表示讚賞!

謝謝。

+0

的日期真的存儲爲'03/11'(*字符串*) – 2013-04-05 02:24:14

+0

月(fieldnamehere)......這應該指向你在正確的方向... – MaxOvrdrv 2013-04-05 02:28:27

+0

@ JW,no..this是隻是一個例子 @ MaxOvrdrv,我能夠確定一個日期所屬的月份。我以我描述的方式使用這些信息時遇到了麻煩。 – JohnnySaxx 2013-04-05 02:34:35

回答

2
;with data(ID, Date, Cost) as (
    select 'a', '20110311', 5 union all 
    select 'a', '20110211', 4 union all 
    select 'b', '20110111', 3 union all 
    select 'b', '20110411', 7 
) 
--- the above just creates a virtual dataset named data. 
--- Your query starts below here 

select * 
    from 
    (
    select ID, left(upper(datename(month,Date)),3) Month_, Cost 
    from data 
    ) p 
pivot (sum(Cost) for Month_ in ([Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],[Aug],[Sep],[Oct],[Nov],[Dec])) v 
+0

非常感謝Richard,正是我在尋找的東西。 因此,我已經做了一些關於樞軸的閱讀。對於遇到類似問題的任何人,這裏是一個很好的鏈接: http://blogs.msdn.com/b/spike/archive/2009/03/03/pivot-tables-in-sql-server-a -simple-sample.aspx 再次,謝謝理查德! – JohnnySaxx 2013-04-05 03:38:27