2010-05-07 1 views

ответ

3

Я считаю, что вы ищете статьи Pivot, прямо из MSDN ...

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

см. msdn article для больше.

0

Проблема со стандартным заявлением PIVOT заключается в том, что вам нужно знать значения столбцов перед началом работы, чтобы вы могли определить их в «FOR xxx IN ('x', 'y', 'x' ...) заявление.

Чтобы обойти это, вам нужно будет сделать некоторый динамический SQL и создать строку, содержащую столбцы.

Интересная статья об этом здесь:

http://www.simple-talk.com/community/blogs/andras/archive/2007/09/14/37265.aspx

Я построил много запросов Pivot, используя эту технику, и, несмотря на то, что динамический SQL не может быть оптимизирована, а также хранимые процедуры, которые трудно они работают хорошо.

При необходимости я могу разместить код примера.

Смежные вопросы