Oracle: нормализованные поля в строку CSV - PullRequest
3 голосов
/ 18 сентября 2009

У меня есть несколько нормализованных данных, которые выглядят так:

a | x
a | y
a | z
b | i
b | j
b | k

Какой запрос вернет данные, так что сторона "many" будет представлена ​​в виде строки CSV?

a | x,y,z
b | i,j,k

1 Ответ

4 голосов
/ 18 сентября 2009

Марк,

Если у вас версия 11gR2, а кто нет :-), тогда вы можете использовать listagg

SQL> create table t (col1,col2)
  2  as
  3  select 'a', 'x' from dual union all
  4  select 'a', 'y' from dual union all
  5  select 'a', 'z' from dual union all
  6  select 'b', 'i' from dual union all
  7  select 'b', 'j' from dual union all
  8  select 'b', 'k' from dual
  9  /

Tabel is aangemaakt.

SQL> select col1
  2       , listagg(col2,',') within group (order by col2) col2s
  3    from t
  4   group by col1
  5  /

COL1  COL2S
----- ----------
a     x,y,z
b     i,j,k

2 rijen zijn geselecteerd.

Если ваша версия не 11gR2, но выше, чем 10gR1, тогда я рекомендую использовать для этого предложение модели, как здесь написано: http://rwijk.blogspot.com/2008/05/string-aggregation-with-model-clause.html

Если значение меньше 10, вы можете увидеть несколько методов в ссылке rexem на страницу oracle-base или в ссылке на OTN-ветку в упомянутом выше посте блога.

С уважением, Роб.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...