2013-12-17 90 views
0

我有這個排序表SQL查詢的樞軸數據

+------------------+ 
| Name Date Category| 
+------------------+ 
| Test1 1/1/2001 2 | 
| Test2 2/1/2001 2 | 
| Test3 3/1/2001 2 | 
| Foo1 5/4/2011 2 | 
| Foo2 6/4/2011 2 | 
| Test1 6/4/2011 3 | 
+------------------+ 

的,我想顯示的結果是這樣的:

Category Test1Date Foo2Date 
------------------------------- 
2   1/1/2011  6/4/2001  
3   6/4/2011  NULL 

我將如何做到這一點的SQL?

+2

如果你是2005+只需使用[PIVOT(HTTP:// technet.microsoft.com/library/ms177410(v=sql.105).aspx) – revoua

回答

3

可以使用聚合函數CASE表達式數據的行轉換爲列:

select category, 
    max(case when name = 'Test1' then date end) Test1Date, 
    max(case when name = 'Foo2' then date end) Foo2Date 
from yourtable 
group by category; 

SQL Fiddle with Demo