WEB开发网
开发学院数据库Oracle Oracle多行记录字符串综合操作几种方法 阅读

Oracle多行记录字符串综合操作几种方法

 2007-06-21 12:33:06 来源:WEB开发网   
核心提示: SELECT country,max(substr(city,2)) cityFROM(SELECT country,sys_connect_by_path(city,',') cityFROM(SELECT country,city,country||rn rchild,
SELECT country,max(substr(city,2)) city
FROM
(SELECT country,sys_connect_by_path(city,',') city
FROM
(SELECT country,city,country||
rn rchild,country||(rn-1) rfather
FROM
(SELECT test.country ,test.city,row_number() over
(PARTITION BY test.country ORDER BY
test.city) rn
FROM test))
CONNECT BY PRIOR rchild=rfather
START WITH rfather LIKE '%0')
GROUP BY country;

下面分步解析,有4个FROM,就有4次结果集的操作。

step 1 给记录加上序号rn
SQL> SELECT test.country ,test.city,row_number() over
(PARTITION BY test.country ORDER
BY test.city) rn
 2  FROM test
 3 /
COUNTRY       CITY             RN
-------------------- -------------------- ----------
日本         大阪             1
日本         东京             2
中国         上海             1
中国         台北             2
中国         香港             3

step 2 创造子节点父节点:

SQL> SELECT country,city,country||
rn rchild,country||(rn-1) rfather
 2  FROM
 3  (SELECT test.country ,
test.city,row_number() over
(PARTITION BY test.country ORDER
BY test.city) rn
 4  FROM test)
 5 /
日本 大阪 日本1 日本0
日本 东京 日本2 日本1
中国 上海 中国1 中国0
中国 台北 中国2 中国1
中国 香港 中国3 中国2

上一页  1 2 3 4 5  下一页

Tags:Oracle 多行 记录

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接