问题描述
嗨,汤姆,
我想输出如下。
请帮帮我。
create table emp_det
( name varchar2(15),
occupation varchar2(15)
);
insert into emp_det values('samantha','doctor');
insert into emp_det values('julia','actor');
insert into emp_det values('maria','actor');
insert into emp_det values('meera','singer');
insert into emp_det values('ashley','professor');
insert into emp_det values('ketty','professor');
insert into emp_det values('jane','actor');
insert into emp_det values('jenny','doctor');
insert into emp_det values('priya','singer');
commit;我想输出如下。
doctor professor singer actor jenny ashley meera jane samantha ketty priya julia null null null maria
请帮帮我。
专家解答
你需要做枢轴!
如果您想为每个有职业的人单独一行,请为该职业中的每个人分配一个数字。然后,Oracle数据库将按此数字隐式分组,将它们拆分为单独的行:
有关旋转的更多信息,请阅读:
https://blogs.oracle.com/sql/how-to-convert-rows-to-columns-and-back-again-with-sql-aka-pivot-and-unpivot
如果您想为每个有职业的人单独一行,请为该职业中的每个人分配一个数字。然后,Oracle数据库将按此数字隐式分组,将它们拆分为单独的行:
set nullwith rws as ( select e.*, row_number() over (partition by occupation order by name) rn from emp_det e ) select * from rws pivot ( min(name) for occupation in ('doctor', 'actor', 'singer', 'professor') ); set null with rws as ( select e.*, row_number() over (partition by occupation order by name) rn from emp_det e ) select * from rws pivot ( min(name) for occupation in ('doctor', 'actor', 'singer', 'professor') );
有关旋转的更多信息,请阅读:
https://blogs.oracle.com/sql/how-to-convert-rows-to-columns-and-back-again-with-sql-aka-pivot-and-unpivot
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




