问题描述
嗨,
我试图学习PIVOT概念,以将行枢转到列,但我无法理解它是如何在内部工作的,以及它如何识别哪些行应该变成列。所以你会解释它是如何使行作为列的。
我试图学习PIVOT概念,以将行枢转到列,但我无法理解它是如何在内部工作的,以及它如何识别哪些行应该变成列。所以你会解释它是如何使行作为列的。
专家解答
枢轴实际上只是句法糖。内部Oracle Database将其转换为 “经典” pivot。即对于您要枢转的每个行值,如果该行没有该值,则有一列返回null。例如:
所以下面的枢轴:
变成:
有关旋转的更多信息,请阅读:
https://blogs.oracle.com/sql/how-to-convert-rows-to-columns-and-back-again-with-sql-aka-pivot-and-unpivot
count ( case when medal = 'Gold' then 1 end )
所以下面的枢轴:
with rws as ( select mod(rownum, 3) x from dual connect by level <= 10 ) select * from rws pivot (count(*) for x in (0 as zero, 1 as one, 2 as two)); ZERO ONE TWO 3 4 3
变成:
select "from$_subquery$_003"."ZERO" "ZERO",
"from$_subquery$_003"."ONE" "ONE",
"from$_subquery$_003"."TWO" "TWO"
from
(select nvl ( sum (
case
when ( "RWS"."X"=0 ) then 1
end ) ,0 ) "ZERO",nvl ( sum (
case
when ( "RWS"."X"=1 ) then 1
end ) ,0 ) "ONE",nvl ( sum (
case
when ( "RWS"."X"=2 ) then 1
end ) ,0 ) "TWO"
from
( select mod ( rownum,3 ) "X" from "SYS"."DUAL" "DUAL" connect by level<=10
) "RWS"
) "from$_subquery$_003"有关旋转的更多信息,请阅读:
https://blogs.oracle.com/sql/how-to-convert-rows-to-columns-and-back-again-with-sql-aka-pivot-and-unpivot
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




