我目前正在尝试oracle pl sql的pivot功能,但我似乎无法显示我想要的输出,
我需要透视OCCUPATIONS中的Occupation列,以便每个Name按字母顺序排序并显示在其相应的Occupation下面。输出列标题应分别为Doctor,Professor,Singer和Actor。
注意:当没有更多名称对应职业时,我应该打印NULL。
使用此表定义
create table occupations
(
name varchar2(100),
occupation varchar2(100)
);
insert into occupations
values ('Samantha', 'Doctor');
insert into occupations
values ('Jenny', 'Doctor');
insert into occupations
values ('Julia', 'Actor');
insert into occupations
values ('Maria', 'Actor');
insert into occupations
values ('Jane', 'Actor');
insert into occupations
values ('Meera', 'Singer');
insert into occupations
values ('Priya', 'Singer');
insert into occupations
values ('Ashely', 'Professor');
insert into occupations
values ('Ketty', 'Professor');
insert into occupations
values ('Christeen', 'Professor');
我希望像这样的输出使用枢轴功能
Jenny Ashley Meera Jane
Samantha Christeen Priya Julia
NULL Ketty NULL Maria
第一列是按字母顺序排列的医生名称列表。
第二列是按字母顺序排列的教授名单。
第三列是按字母顺序排列的歌手姓名列表。
第四列是按字母顺序排列的Actor名称列表。
每个占用的名称数量少于最大值的列的空单元格数据(在本例中为教授和演员列)都填充了NULL值。
到目前为止,我目前的查询是这个,
select * from
(
select name, occupation
from occupations
)
pivot
(
min(name)
for occupation in ('Doctor','Professor','Singer','Actor')
)
但我只得到一排。
Jenny Ashely Meera Jane
任何提示和解释?感谢。