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)
如何将其应用于字符串值?
聚合函数可以是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)