2013-12-17 4 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 См

Смежные вопросы