【发布时间】:2020-07-12 02:50:06
【问题描述】:
我需要将clob数据pivot到多个列中,基本上,我想将clob数据行转换为列。
create table staff (
name varchar2(200),
month varchar2(20),
staff_names clob);
insert into staff values ('Vijay','Jan','staff_name_1');
insert into staff values ('Vijay','Jan','staff_name_2');
insert into staff values ('Vijay','Jan','staff_name_3');
insert into staff values ('Vijay','Jan','staff_name_4');
insert into staff values ('Vijay','Jan','staff_name_5');
insert into staff values ('Vijay','Jan','staff_name_6');
insert into staff values ('Vijay','Jan','staff_name_7');
insert into staff values ('Vijay','Jan','staff_name_8');
insert into staff values ('Vijay','Jan','staff_name_9');
insert into staff values ('Vijay','Jan','staff_name_10');
insert into staff values ('Vijay','Jan','staff_name_11');
insert into staff values ('Vijay','Jan','staff_name_12');
insert into staff values ('Vijay','Jan','staff_name_13');
...
insert into staff values ('Vijay','May','staff_name_13');
select name, month, wm_concat(staff_name) from staff group by name, month;
输出是
这里的数字是 (56, 39, 70, 90, 52)- 连接的员工姓名的总数。
我想查看每个月的所有员工姓名,在每个经理别名下工作 注意:这里我展示的是单身经理 'Vijay'
select
name,
case when month='Jan' then all_names
end as Jan,
case when month='Feb' then all_names
end as Feb,
case when month='Mar' then all_names
end as Mar,
case when month='Apr' then all_names
end as Apr,
case when month='May' then all_names
end as May
from
(select name, month, wm_concat(staff_name) as all_names from staff group by name, month);
我的 select 语句的输出是这样的
但我的预期输出应该是这样的
如果这是关于数字的,我可以分别使用 Max/Count。在这里,我正在寻找非数字数据。 我也尝试过数据透视,但因为我在 staff_name 列中有 clob 数据,所以我也无法使用数据透视和解码。因为两者都有 4000 个字符的限制。我愿意接受任何建议。
【问题讨论】:
-
按姓名、月份从员工组中选择姓名、月份、wm_concat(staff_name);您是否将其作为 clob 列在 staff_names 上运行并得到有问题的上述结果?我想知道它不在这里运行,看来 lob 数据类型有很多限制,不应该以这种方式使用。
标签: oracle pivot-table multiple-columns rows clob