透视条款

适用于:检查标记是的砖的SQL检查标记是的砖运行时12.0及以后。

变换的行table_reference旋转的列行和列列崩溃:第一个新列包含原始列组名称(或别名的)值,这列是跟着一群列每一列的值组。

语法

table_reference透视({包括零位|排除零位}]{single_value|multi_value}(value_columnunpivot_column({column_name(column_alias]}(,]))(table_alias]single_value(value_columnunpivot_column({column_name(column_alias]}(,]))multi_value((value_column(,])unpivot_column({(column_name(,])(column_alias]}(,]))

参数

  • table_reference

    标识的主题透视操作。

  • 包括零位排除零位

    是否,过滤掉行value_column。默认值是排除零位

  • value_column

    一个不合格的列别名。本专栏将持有的价值观。的类型决定value_column是最常见的一种对应的吗column_name列类型。

  • unpivot_column

    一个不合格的列别名。本专栏将旋转的名称column_name年代或其column_alias年代的类型unpivot_column字符串

    对于多值透视的值将被连接“_”分离column_name年代,如果没有column_alias

  • column_name

    标识列将un-pivoted的关系。这个名字可能是合格的。所有column_name年代必须共享一个少见的类型。

  • column_alias

    一个可选名称中使用的unpivot_column

  • table_alias

    结果表(可选)指定一个标签。如果table_alias包括column_identifier年代数量必须匹配产生的列数透视

结果

临时表下面的形式:

  • 所有的列table_reference除命名为column_name年代。

  • unpivot_column类型的字符串

  • value_column年代最常见的类型的匹配column_name年代。

例子

- >创建或替换临时视图上单个列透视销售(位置、年q1、q2、q3 q4)作为值(“多伦多”,2020,100,80,70,150),(零“旧金山”,2020年,20年,50,60),(“多伦多”,2021,110,90,80,170),(“三藩市”,2021,70,120,85,105);> SELECT *从销售透视包括null(销售季度(q1‘Jan-Mar’,是‘Apr-Jun’,第三季度“Jul-Sep”,销售。第四季度Oct-Dec));位置今年一季度销售- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -多伦多2020 Jan-Mar 100多伦多2020 Apr-Jun 80多伦多2020 Jul-Sep 70多伦多2020 Oct-Dec 150旧金山2020 Jan-Mar零旧金山2020 Apr-Jun 20旧金山2020 Jul-Sep 50旧金山2020 Oct-Dec 60多伦多2021 Jan-Mar 110多伦多2021 Apr-Jun 90多伦多2021 Jul-Sep 80多伦多2021年Oct-Dec 170年旧金山2021 Jan-Mar 70旧金山2021 Apr-Jun 120旧金山2021 Jul-Sep 85旧金山2021 Oct-Dec 105——这相当于:>选择位置,年,内联(arrays_zip(数组(‘Jan-Mar’,‘Apr-Jun’,‘Jul-Sep’,‘Oct-Dec’),数组(q1、q2,第三、第四季度)))(季度,销售)销售;- >创建或替换临时上多列透视视图oncall(周,区域,name1 email1, phone1, name2, email2, phone2)作为值(2022,“前端”,“家”,“fred@alwaysup.org”, 15551234567,“屁股”,“fanny@lwaysup.org”, 15552345678),(2022年,1,“后端”,“鲍里斯”,“boris@alwaysup.org”, 15553456789,“潮”,“boomer@lwaysup.org”, 15554567890),(2022年2“前端”、“佛朗基”,“frank@lwaysup.org”, 15555678901,“鳍”,“fin@alwaysup.org”, 15556789012),(2022年2“后端”,“漂亮的”、“bonny@alwaysup.org”, 15557890123,“Bea”、“bea@alwaysup.org”, 15558901234);> SELECT * FROM oncall透视((姓名、电子邮件、电话)的优先级((name1、email1 phone1)为主,(name2, email2 phone2)二级));年周区域优先名字邮件电话- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2022 1前端主要弗雷迪fred@alwaysup.org 15551234567 2022 1前端二级范妮fanny@lwaysup.org 15551234567 2022 1端主要鲍里斯boris@alwaysup.org 15553456789 2022 1端二次潮boomer@lwaysup.org 15553456789 2022 2前端主佛朗基frank@lwaysup.org 15555678901 2022 2前端二级鳍fin@alwaysup.org 15556789012 2022 2端主要波尼bonny@alwaysup.org 15556789012 2022 2端二次Bea bea@alwaysup.org 15558901234——这相当于:>选择一年,一周,区域,内联(arrays_zip(数组(“主”,“中等”),数组(name1 name2),数组(email1 email2),数组(phone1 phone2))),(优先级、名称、电子邮件、电话)从oncall;