Транспонирование результата sql таким образом, что один столбец переходит в несколько столбцов

Я пытаюсь получить данные из таблицы для опроса в определенном формате. Однако все мои попытки, похоже, передают БД из-за слишком большого количества соединений / слишком тяжелой работы с БД.

Мои данные выглядят так:

id, user, question_id, answer_id, 
1,   1,   1,           1
3,   1,   3,           15
4,   2,   1,           2
5,   2,   2,           12
6,   2,   3,           20

Всего около 250 000 строк, и у каждого пользователя около 30 строк. Я хочу, чтобы результат выглядел так:

user0, q1, q2,   q3 
1,     1,  NULL, 15
2,     2,  12,   20 

Чтобы у каждого пользователя была одна строка в результате, каждая с отдельным столбцом для каждого ответа.

Я использую Postgres, но мне хотелось бы получить ответы на любом языке SQL, так как я мог бы перевести на Postgres.

РЕДАКТИРОВАТЬ: мне также нужно иметь возможность иметь дело с пользователями, не отвечающими на вопросы, например, в приведенном выше примере q2 для пользователя 1.

5
задан Erwin Brandstetter 27 May 2012 в 21:59
поделиться