Oracle 10g 增加了一个非常有用的 group 函数 ----- COLLECT, 并且在11g中得到了进一步加强。
这个函数可以用来实现“String Aggregation” 作用, 即把同一个group中的多行数据转成一行(以collection形式出现)。记得曾在园子中回答过一个SQL问题,见这里, 当时用到的是sys_connect_by_path,但是这种方法性能很不好,在下文中会提到。如果用COLLECT来做,性能会得到很大提升!
首先来看下Oracle 10g中的COLLECT函数,
1. The Collect Function in 10g. (参见这里)
(1) 首先来看看一个例子。
[默认schema scott是被锁住的,需要首先解锁!]
SQL> alter user scott account unlock