Oracle 如何将(clob数据)行转换为列
我需要将clob数据透视到多列中,基本上,我希望将clob数据行转换为列Oracle 如何将(clob数据)行转换为列,oracle,pivot-table,multiple-columns,rows,clob,Oracle,Pivot Table,Multiple Columns,Rows,Clob,我需要将clob数据透视到多列中,基本上,我希望将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
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。我在这里寻找非数字数据。
我也尝试了pivot,但因为我在staff_name列中有clob数据,所以我不能同时使用pivot和解码。因为两者都有4000个字符的限制。我愿意接受任何建议。无论如何,我不知道wm_concat是什么 您不需要使用用例,但应按如下方式使用pivot:
select
*
from
(
select
t.name,
t.month,
t.staff_names
from staff t
)
pivot (
count(staff_names)--<aggregation function>
For month in ([Jan],[Feb],[Mar],[Apr] )
)
我建议您研究oracle中的pivot从员工组中按姓名、月份选择姓名、月份、wm_concatstaff_姓名;您是否将此作为clob列在staff_names上运行,并得到所述结果?我想知道,因为它没有在这里运行,所以lob数据类型似乎有很多限制,不应该以这种方式使用。