Проблема со стандартным оператором PIVOT заключается в том, что вам нужно знать значения столбцов перед тем, как вы сможете определить их в выражении «FOR xxx IN ('x', 'y', 'x' ...)" .
Чтобы обойти это, вам нужно выполнить динамический SQL и создать строку, содержащую столбцы.
Интересная статья на эту тему здесь:
http://www.simple -talk.com / сообщества / блоги / Андраш / Архив / 2007/09/14 / 37265.aspx
Я построил много запросов PIVOT, используя эту технику, и, несмотря на то, что динамический SQL не может быть оптимизирован так же, как хранимые процедуры, которые жестко запрограммированы, они работают хорошо.
При необходимости я могу опубликовать пример кода.