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]))

masoud ramezani
  • 21,262
  • 29
  • 96
  • 150

3 Answers3

2

The IN list defines the resultset layout.

It should be known at parse time.

Quassnoi
  • 398,504
  • 89
  • 603
  • 604
1

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

Adriaan Stander
  • 156,697
  • 29
  • 278
  • 282
1

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.

SQL Server 2005 Pivot on Unknown Number of Columns

Community
  • 1
  • 1
Robin Day
  • 97,932
  • 23
  • 115
  • 164