SYS_CONNECT_BY_PATH 函数综合应用 应用多字段拼在一行字符串

本文详细介绍了如何使用SYS_CONNECT_BY_PATH函数将多个字段的数据拼接成一行字符串,结合实例展示了其在数据处理中的具体应用,尤其是在构建树状结构时的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 -----------------根据排序建树状结构

-------------------------------------------------------------------------------------







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值