Результаты запроса, показывающие строки в виде столбцов - PullRequest
1 голос
/ 01 октября 2011

У меня есть форма, которая динамически создает флажки.Пользователь входит в систему и выбирает 0 для всех флажков.Массив флажков генерируется из таблицы «options».Форма отправляет записи в 2 таблицы «Опрос» (одна запись данных о человеке) и «Выборы» (ключ опроса и ключ опций (или ключи)).Я хочу вытащить отчет, в котором будут показаны все возможные варианты в виде заголовков столбцов со списком людей из таблицы опроса, которые выбрали эту опцию.Мой результат будет выглядеть следующим образом:

    FirstAid   Triage    Firefighting  HamRadio
    Sam         Sue        Sam
    Judy        Judy       Bill
                Bob

Таким образом, все результаты отображаются в результатах, даже если никто не выбрал его.

Структура таблиц:

     OPTIONS
     option_id   description

     SURVEY
     survey_id   name

     SELECTED OPTIONS
     survey_id   option_id

Это упрощенный пример фактических данных, но включает в себя критические части (я думаю).Как я могу использовать SQL для получения нужных мне результатов?

Спасибо

1 Ответ

1 голос
/ 03 октября 2011

Отказ от ответственности: я не использовал Postgres в течение нескольких лет, поэтому могут быть более эффективные методы выполнения этой задачи, чем те, которые я перечисляю.

Вариант 1: Использование Case When операторов, как это было сделано в приведенном ниже связанном решении.
правильный способ создания сводной таблицы в postgresql с использованием CASE WHEN

Вариант 2: ИспользоватьCrosstab функция доступна в tablefunc contrib, как это было сделано в нижеприведенном связанном решении.
PostgreSQL Crosstab Query

Документация для crosstab tablefunc contrib http://www.postgresql.org/docs/9.1/static/tablefunc.html

...