2009-12-01 7 views
1

Я пишу хранимую процедуру для Microsoft SQL Server 2005, и я хочу, чтобы создать динамический SQL Pivot:Dynamic Pivot (в SQL Server 2005)

SELECT Book.ISBN, 
     Book.Name 
     StockMutation.StockLocation 
FROM Book INNER JOIN StockMutation AS sm ON Book.bookid = sm.bookid 
PIVOT 
(
     COUNT(sm.NumberOfBooks) 
     FOR sm.StockLocation IN (...) 
) 

Предпочтительнее Я хочу, чтобы заменить (...) с :

SELECT StockLocation.StockLocation FROM StockLocation 

и не жёстко все места в порядке, но SQL не принимает это ([Location1], [LOCATION2] и др.).

Как это решить?

ответ

1

Вы не можете сделать это в чистом SQL, вам нужно использовать динамический SQL и построить фактический SQL, который вы хотите выполнить.

Вы можете сделать это следующим образом:

DECLARE @sql VARCHAR(8000) 
SET @sql = 'FOR sm.StockLocation IN (' 

DECLARE cursor... 

LOOP cursor... 

SET @sql = @sql + '''' + column_name + ''',' 

// end loop 

EXEC(@sql) 
+0

Согласен. Динамические столбцы = динамический SQL – gbn