透视条款
适用于:砖的SQL砖运行时12.0及以后。
变换的行table_reference旋转的列行和列列崩溃:第一个新列包含原始列组名称(或别名的)值,这列是跟着一群列每一列的值组。
语法
table_reference透视({包括零位|排除零位}]{single_value|multi_value}(value_column为unpivot_column在({column_name(column_alias]}(,…]))(table_alias]single_value(value_column为unpivot_column在({column_name(column_alias]}(,…]))multi_value((value_column(,…])为unpivot_column在({(column_name(,…])(column_alias]}(,…]))
参数
标识的主题
透视
操作。包括零位
或排除零位
是否,过滤掉行
零
在value_column
。默认值是排除零位
。一个不合格的列别名。本专栏将持有的价值观。的类型决定
value_column
是最常见的一种对应的吗column_name
列类型。一个不合格的列别名。本专栏将旋转的名称
column_name
年代或其column_alias
年代的类型unpivot_column
是字符串
。对于多值
透视
的值将被连接“_”
分离column_name
年代,如果没有column_alias
。标识列将un-pivoted的关系。这个名字可能是合格的。所有
column_name
年代必须共享一个少见的类型。一个可选名称中使用的
unpivot_column
。结果表(可选)指定一个标签。如果
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;