Создайте два массива для двух полей, сохраняя порядок сортировки массивов в синхронизации (без подзапроса)

Для этого вопроса нет ни рифмы, ни причины, кроме того, что мне было любопытно, как можно поступить так.

Платформа: В то время как я надеялся на решение SQL-Standard, моя основная концентрацияPostgreSQL 8.4+, (Я знаю, 9.0+ имеет некоторые функции сортировки массивов.)

SELECT    id, group, dt
FROM      foo
ORDER BY  id;
  id   | group |    dt
-------+-------+-----------
   1   |  foo  | 2012-01-01
   1   |  bar  | 2012-01-03
   1   |  baz  | 2012-01-02
   2   |  foo  | 2012-01-01
   3   |  bar  | 2012-01-01
   4   |  bar  | 2012-01-01
   4   |  baz  | 2012-01-01

Я знаю, что следующий запрос неверен, но результат аналогичен тому, что я получаю; способ связать два поля (сортировкаgroup также следует отсортироватьdt):

SELECT    id, sort_array(array_agg(group)), array_agg(dt)
FROM      foo
GROUP BY  id;
  id   |     group      |                dt
-------+----------------+------------------------------------
   1   |  {bar,baz,foo} | {2012-01-03,2012-01-02,2012-01-01}
   2   |  {foo}         | {2012-01-01}
   3   |  {bar}         | {2012-01-01}
   4   |  {bar,baz}     | {2012-01-01,2012-01-01}

Есть ли простой способ связать поля для сортировки без использования подзапроса? Может быть, построить массив массивов, а затем unnest?

Ответы на вопрос(3)

Ваш ответ на вопрос