如何使用Pivot显示具有空值的所有数据

时间:2018-03-11 09:58:52

标签: oracle plsql pivot pivot-table

我目前正在尝试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

任何提示和解释?感谢。

0 个答案:

没有答案