我有一些像这样的标准化数据。
a | x a | y a | z b | i b | j b | k
哪种查询将返回数据,以使“许多”面表示为CSV字符串?
a | x,y,z b | i,j,k
标记,
如果您使用的是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链接中看到几种技术。