问题描述
嗨
我有一个示例场景,我有一个名为cust的表,如下所示
我想要下面这样的输出
这就是我使用unpivot选项所做的,这就是我得到的
我尝试了不同的方式,但无法提供所需的格式。plz帮助我...
问候
阿伦
我有一个示例场景,我有一个名为cust的表,如下所示
select * from cust; name m1 m2 m3 ravi maruti honda toyota john honda toyota null
我想要下面这样的输出
ravi maruti ravi honda ravi toyota john honda john toyota john null
这就是我使用unpivot选项所做的,这就是我得到的
with t as (select name,m1,m2,m3 from cust) select * from t unpivot (value for col in (name,m1,m2,m3)); col value name ravi m1 maruti m2 honda m3 toyota name john m1 honda m2 toyota
我尝试了不同的方式,但无法提供所需的格式。plz帮助我...
问候
阿伦
专家解答
你只是解开了M1、M2和m3柱。所以名字不应该在unpivot子句中!如果你想让空值出现,你需要使用 “include nulls” 子句:
您可以在以下位置阅读有关展开的更多信息:https://blogs.oracle.com/sql/how-to-convert-rows-to-columns-and-back-again-with-sql-aka-pivot-and-unpivot
并且,请将来以 “创建表插入” 的形式提供您的测试用例!
CREATE TABLE t
(name varchar2(4), m1 varchar2(6), m2 varchar2(6), m3 varchar2(6))
;
INSERT INTO t VALUES ('ravi', 'maruti', 'honda', 'toyota');
INSERT INTO t VALUES ('john', 'honda', 'toyota', NULL);
with t1
as (select name,m1,m2,m3 from t)
select *
from t1
unpivot include nulls (
value for col in (m1,m2,m3)
);
NAME CO VALUE
---- -- ------
ravi M1 maruti
ravi M2 honda
ravi M3 toyota
john M1 honda
john M2 toyota
john M3您可以在以下位置阅读有关展开的更多信息:https://blogs.oracle.com/sql/how-to-convert-rows-to-columns-and-back-again-with-sql-aka-pivot-and-unpivot
并且,请将来以 “创建表插入” 的形式提供您的测试用例!
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




