小编典典

Oracle:归一化为CSV字符串的字段

sql

我有一些像这样的标准化数据。

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

哪种查询将返回数据,以使“许多”面表示为CSV字符串?

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

阅读 276

收藏
2021-03-23

共1个答案

小编典典

标记,

如果您使用的是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-thread链接中看到几种技术。

2021-03-23