Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何将(clob数据)行转换为列_Oracle_Pivot Table_Multiple Columns_Rows_Clob - Fatal编程技术网

Oracle 如何将(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

我需要将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 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数据类型似乎有很多限制,不应该以这种方式使用。