雪花中的枢轴字符串值

Bir*_*tha 3 pivot snowflake-cloud-data-platform

我怎样才能旋转这个表

ID 属性名称 属性值
1 姓名 约翰
1 国家 英国
1 城市 伦敦

进入结构?

ID 姓名 国家 城市
1 约翰 英国 伦敦

根据文档,枢轴需要一个聚合函数

 SELECT ...
   FROM ...
   PIVOT ( <aggregate_function> ( <pivot_column> )
            FOR <value_column> IN ( <pivot_value_1> [ , <pivot_value_2> ... ] ) )
Run Code Online (Sandbox Code Playgroud)

如何将其应用于字符串值?

Fel*_*ffa 5

聚合函数可以是max(). 例如:

select * 
from (
    select xx.seq, xx.value:"@id" id, xx.value:"$" title
    from BooksXML, table(flatten(xml:"$":"$")) xx
)
pivot(max(title) for id in ('bk101', 'bk102', 'bk103', 'bk104', 'bk105')) as p
order by seq
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

附表:

CREATE temp TABLE BooksXML
as
select parse_xml('<catalog issue="spring">
  <Books>
    <book id="bk101">The Good Book</book>
    <book id="bk102">The OK Book</book>
    <book id="bk103">The NOT Ok Book</book>
    <book id="bk104">All OK Book</book>
    <book id="bk105">Every OK Book</book>
  </Books>
</catalog>') xml
union all select parse_xml('
<catalog issue="spring">
  <Books>
    <book id="bk102">The OK Book1</book>
    <book id="bk103">The NOT Ok Book1</book>
    <book id="bk104">All OK Book1</book>
  </Books>
</catalog>')
union all select parse_xml('
<catalog issue="spring">
  <Books>
    <book id="bk101">The Good Book2</book>
    <book id="bk103">The NOT Ok Book2</book>
    <book id="bk104">All OK Book2</book>
    <book id="bk105">Every OK Book2</book>
  </Books>
</catalog>');
Run Code Online (Sandbox Code Playgroud)