小编Ark*_*ler的帖子

Oracle - 在 PIVOT 中聚合 CLOB

我有包含他们的位置权限和这些权限组的大量用户数据。我需要为每个用户做一个只包含 1 行的报告。

其中一组中的每个用户都有很多权限,我需要使用自己的聚合函数LISTAGG_CLOB来生成聚合列表但返回CLOB(超过 4000 个字符)。

此查询为我提供了具有权限的所有用户的列表,但它为每一组创建一行。

select u.NAME,
lpg.NAME,
LISTAGG_CLOB(l.NAME)
from USERS u
left join LOCATION_PERM lp
on lp.USER_ID = u.ID
left join LOCATION l
on l.ID = lp.LOCATION
left join LOCATION_PERM_GROUP lpg
on lpg.ID = lp.GROUP
group by u.NAME, lpg.NAME
Run Code Online (Sandbox Code Playgroud)

我试图对这些数据进行透视,但我无法让它工作,因为 Oracle 不会将我自己的聚合函数识别为聚合函数,并且没有聚合函数(除了LISTAGG太小)用于聚合字符串。

我尝试的示例是:

1)

select * from (
    select u.NAME as USER,
    lpg.NAME as PERM_GROUP,
    LISTAGG_CLOB(l.NAME) as PERMISSIONS
    from USERS u
    left join LOCATION_PERM lp
    on lp.USER_ID = u.ID
    left join …
Run Code Online (Sandbox Code Playgroud)

oracle pivot clob aggregate-functions listagg

5
推荐指数
0
解决办法
1190
查看次数

标签 统计

aggregate-functions ×1

clob ×1

listagg ×1

oracle ×1

pivot ×1