我在 SQL 中转置数据时遇到一个问题。例如下面给出的表格
id |
source_name |
value |
1 |
cp |
x |
1 |
cp |
y |
1 |
hi |
a |
2 |
li |
b |
2 |
cp |
c |
2 |
li |
d |
3 |
li |
e |
我需要以下格式的表格(转置但带有字符串聚合)-
id |
cp |
hi |
li |
mi |
1 |
x,y |
a |
null |
null |
2 |
c |
null |
b,d |
null |
3 |
null |
null |
null |
d |
通过当前的 sql 查询,我得到以下格式的表。
id |
cp |
hi |
li |
mi |
1 |
x |
a |
null |
null |
2 |
c |
null |
b |
null |
3 |
null |
null |
null |
d |
任何人都可以调整查询或建议 SQL 中的新查询(平台 - Bigquery)吗?
当前查询 -
select id, any_value(if(source_name = 'cp', value, null)) as cp,
any_value(if(source_name = 'hi', value, null)) as hi,
any_value(if(source_name = 'li', value, null)) as li
any_value(if(source_name = 'mi', value, null)) as mi
from table_name group by id
Use PIVOT 运算符 instead
select *
from `project.dataset.table`
pivot (string_agg(value) for source_name in ('cp', 'hi', 'li', 'mi'))
如果应用于您问题中的样本数据
输出是
查看https://stackoverflow.com/a/67479622/5221944如果你想让它为你动态构建列列表
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)