|
楼主吉祥, 看下关于37页那个不定列行列转换例子好像有点笔误:
原数据:
c1 c2
--------
1 我
1 是
1 谁
2 知
2 道
3 不
想得到的结果:
c1 name
-------------
1 我是谁
2 知道
3 不
-----------------------------------------------------------------------------------------------------
原代码:
SELECT c1, SUBSTR(MAX(sys_connect_by_path(c2, ';')),2) NAME
FROM (SELECT c1, c2, rn, LEAD(rn) OVER(PARTITION BY c1 ORDER BY rn) rn1
FROM (SELECT c1, c2, row_number() OVER(ORDER BY c2) rn FROM t) rn)
START WITH rn1 IS NULL
CONNECT BY rn1 = PRIOR rn
GROUP BY c1;
结果:
c1 name
---------------
1 我;谁;是
2 知;道
3 不
-----------------------------------------------------------------------------------------------------
更改:
SELECT c1, replace(max(sys_connect_by_path(c2, ' ')),' ','') NAME
FROM (SELECT c1, c2, rn, LAG(rn) OVER(PARTITION BY c1 ORDER BY rn) rn1
FROM (SELECT c1, c2, row_number() OVER(ORDER BY c1) rn FROM t) rn)
START WITH rn1 IS NULL
CONNECT BY rn1 = PRIOR rn
GROUP BY c1;
结果:
c1 name
----------------
1 我是谁
2 知道
3 不
谢谢楼主带来如此好的资料! |
|