Могу ли я использовать PIVOT без скобок? - PullRequest
2 голосов
/ 11 августа 2011
PIVOT 
(
    count(DueCount) FOR dueLibraries.s_folder IN ([Assembly Report-TUL],[Balance-TUL],[BOM-TUL],[Hydrostatic-TUL],[Inspection-TUL],[IOM Manual-TUL],[MTR-TUL],[NDT-TUL],[Performance-TUL],[Inputs - TUL],[Transmitted])
) as MonthlyTally 

У меня, скорее, просто так:

PIVOT 
(
    count(DueCount) FOR dueLibraries.s_folder IN (select * from dueLibraries)
) as MonthlyTally 

Есть ли способ сделать это?

1 Ответ

4 голосов
/ 12 августа 2011

Ваш вопрос, как кажется, двоякий.

Прежде всего, идентификаторы в списке IN вашего первого фрагмента - это идентификаторы с разделителями . Они должны быть разделены квадратными скобками, потому что они не подчиняются правилам для обычных идентификаторов в Transact-SQL (особенно потому, что они включают пробелы и дефисы).

Вторая часть вашего вопроса касается замены явного списка столбцов чем-то вроде маски, чтобы сделать список динамическим. Теперь нет доступного синтаксиса для этого, и ваш единственный вариант - это динамический запрос с предложением PIVOT. Вот один пример того, как это можно реализовать.

...