SYS_CONNECT_BY_PATH 函数综合应用 应用多字段拼在一行字符串
2017-12-07 14:24
771 查看
SELECT
f.nowdate AS "nowdate",
f.DAYOFWEEK "dayofweek",
f.WEEKOFMONTH AS "weekofmonth",
f.YEARMONTH "yearmonth",
COUNT (1) AS "messageNum",
LTRIM (
MAX (
SYS_CONNECT_BY_PATH (f.C2 || ',' || f.state, '|') -----------SYS_CONNECT_BY_PATH函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示。
) KEEP (
DENSE_RANK LAST -------------DENSE_RANK是排序策略 FIRST/LAST就是对数据进行筛选了
ORDER BY
f.pnum
),
'|'
) AS "message"
----------------------------------------------
FROM
(
SELECT
A .nowdate,
A .yearmonth,
A .weekofmonth,
A .dayofweek,
A .state,
b.c2,
ROW_NUMBER () OVER (
PARTITION BY A .nowdate
ORDER BY
b.c2
) AS pnum, ----------------------------按照日期进行生成序号排序(生产序号的方法通过over()函数里面的语句来控制。
ROW_NUMBER () OVER (
PARTITION BY A .nowdate
ORDER BY
b.c2
) - 1 AS lnum
FROM
skin_serve A
LEFT JOIN SYS_COMPANY B ON A .SURVERUNIT = b. ID
WHERE
A .del_flag = '0'
AND A .yearmonth = '201711'
) f
GROUP BY
f.DAYOFWEEK,
f.WEEKOFMONTH,
f.NOWDATE,
f.YEARMONTH CONNECT BY f.lnum = PRIOR f.pnum
AND f.nowdate = PRIOR f.nowdate START WITH f.pnum = 1 -----------------根据排序建树状结构
-------------------------------------------------------------------------------------
f.nowdate AS "nowdate",
f.DAYOFWEEK "dayofweek",
f.WEEKOFMONTH AS "weekofmonth",
f.YEARMONTH "yearmonth",
COUNT (1) AS "messageNum",
LTRIM (
MAX (
SYS_CONNECT_BY_PATH (f.C2 || ',' || f.state, '|') -----------SYS_CONNECT_BY_PATH函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示。
) KEEP (
DENSE_RANK LAST -------------DENSE_RANK是排序策略 FIRST/LAST就是对数据进行筛选了
ORDER BY
f.pnum
),
'|'
) AS "message"
----------------------------------------------
FROM
(
SELECT
A .nowdate,
A .yearmonth,
A .weekofmonth,
A .dayofweek,
A .state,
b.c2,
ROW_NUMBER () OVER (
PARTITION BY A .nowdate
ORDER BY
b.c2
) AS pnum, ----------------------------按照日期进行生成序号排序(生产序号的方法通过over()函数里面的语句来控制。
PARTITION BY A .nowdate
ORDER BY
b.c2
) - 1 AS lnum
FROM
skin_serve A
LEFT JOIN SYS_COMPANY B ON A .SURVERUNIT = b. ID
WHERE
A .del_flag = '0'
AND A .yearmonth = '201711'
) f
GROUP BY
f.DAYOFWEEK,
f.WEEKOFMONTH,
f.NOWDATE,
f.YEARMONTH CONNECT BY f.lnum = PRIOR f.pnum
AND f.nowdate = PRIOR f.nowdate START WITH f.pnum = 1 -----------------根据排序建树状结构
-------------------------------------------------------------------------------------
相关文章推荐
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- Oracle多行转一行:wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- Oralce的SYS_CONNECT_BY_PATH函数使用实例
- wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- Oracle List 功能 《=》 Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- 好记性不如烂笔头,记录一下 ORA-30004 :使用sys_connect_by_path 函数时,不能将分隔符作为列值的一部分
- SYS_CONNECT_BY_PATH 函数
- Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- ORACLE 中SYS_CONNECT_BY_PATH 函数
- SYS_CONNECT_BY_PATH 函数
- wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- Oracle 树形SQL语句,SYS_CONNECT_BY_PATH 函数
- ORACLE多行合并为一行(row_number,sys_connect_by_path)
- wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- SYS_CONNECT_BY_PATH 函数
- Oracle 树形SQL语句,SYS_CONNECT_BY_PATH 函数