我有一个以这种方式存储的项目表:
A1 | B1 A1 | B2 A1 | B3 A2 | B1 A2 | B4 ...
而且我需要使用SQL Query进行检索:
A1 | B1, B2, B3 A2 | B1, B4 ...
如果您拥有11g第2版,则可以使用Listagg:
Listagg
Select a, Listagg(b, ', ') Within Group ( Order By b ) From t Group By a
它允许对您的值进行排序,并且它已经随Oracle一起提供:
A1 B1, B2, B3 A2 B1, B4
否则,您可以使用Tom Kyte的stragg函数,如Rows to String中所述。
stragg
Select a, stragg(b) From t Group By a
退货
A1 B1,B3,B2 A2 B1,B4