Snowflake中字符串类型值如何实现Pivot行转列操作
解决方案
针对字符串类型的行转列场景,因为同一个ID+attribute_name组合只会对应唯一的attribute_value,可以使用MAX()或者MIN()作为聚合函数,这两个函数均支持字符串类型的入参,且单值场景下聚合结果就是原值本身,不会修改实际返回内容。
完整实现代码
SELECT ID, "'Name'" AS Name, "'Country'" AS Country, "'City'" AS City FROM your_table_name -- 替换为实际的表名 PIVOT ( MAX(attribute_value) -- 也可以替换为MIN(attribute_value),效果完全一致 FOR attribute_name IN ('Name', 'Country', 'City') )
补充说明
- 如果你的业务场景中存在同一个
ID+attribute_name对应多个attribute_value的情况,可以根据需求调整聚合函数:比如要拼接所有值可以用LISTAGG(attribute_value, ','),要去重拼接可以搭配LISTAGG(DISTINCT attribute_value, ',')使用 - Snowflake的PIVOT语法返回的默认列名是和IN子句中取值一致的带单引号格式,所以需要在SELECT阶段手动给列起别名,才能匹配你预期的宽表列名
内容的提问来源于stack exchange,提问作者Birat Bade Shrestha
相关产品推荐
相关产品推荐

