views:

44

answers:

3

As you know the PIVOT syntax is like below :

FROM table_source
PIVOT ( 
 aggregate_function ( value_column )
 FOR pivot_column
 IN ( <column_list>)
) table_alias

I want to know is it possible that we pass a query as <column_list> to PIVOT?

In action, I want to write

FOR DepartmentName IN (SELECT Name From Department))

instead of

FOR DepartmentName IN ([Production], [Engineering], [Marketing]))

+1  A: 

The IN list defines the resultset layout.

It should be known at parse time.

Quassnoi
+1  A: 

If I understand you correctly, NO, you can only do that with dynamic sql.

astander
+1  A: 

The only way to have a dynamic "column_list" is to use dynamic sql. You have to build your main query, inject your column list into it and then run it.

http://stackoverflow.com/questions/213702/sql-server-2005-pivot-on-unknown-number-of-columns

Robin Day