Вопрос о достоинствах Pivot vs Case - PullRequest
4 голосов
/ 11 марта 2011

У меня есть запрос, который возвращает атрибуты объекта.Я хочу, чтобы атрибуты были повернуты в таблицу.Я видел сводные таблицы, используемые для чего-то подобного, но только в тех случаях, когда агрегатные функции выполняются над столбцами в сводке.Я также видел, что операторы case делали то же самое.

Поскольку вы должны вручную выписывать каждый столбец в сводной таблице, объем работы для каждого из них относительно одинаковый.Каковы преимущества и ограничения одного перед другим?

Ответы [ 2 ]

5 голосов
/ 11 марта 2011

Я согласен с Кеном. Я никогда не помню синтаксис PIVOT, не ссылаясь на BOL, и, кроме того, он менее гибок, чем заявление старой школы. У вас может быть только один агрегат, означающий, что невозможно сделать что-то вроде.

SELECT COUNT(CASE WHEN foo='bar' THEN foo END) AS bar_count,
         SUM(CASE WHEN foo='bar' THEN foo END)  AS bar_sum
FROM your_table     
4 голосов
/ 11 марта 2011

Я попробовал PIVOT и не увидел никаких преимуществ, вам все равно придется указывать имя каждого столбца (дважды, если я помню), и синтаксис гораздо менее интуитивен, чем операторы case.

Попробовав несколько раз, я вернулся к делу.

...