google-bigquery - BigQuery - 将多列连接成一列以获取大量列
问题描述
我的数据看起来像:
排 | col1 | col2 | col3 | ... | 列 |
---|---|---|---|---|---|
1 | 一个 | 无效的 | 乙 | ... | 无效的 |
2 | 无效的 | 乙 | C | ... | D |
3 | 无效的 | 无效的 | 无效的 | ... | 一个 |
我想将列浓缩在一起以获得:
排 | 最后 |
---|---|
1 | 甲,乙 |
2 | 乙、丙、丁 |
3 | 一个 |
字母的顺序无关紧要,如果解决方案包含空值,例如。A,null,B,null 等。我可以研究如何稍后删除它们。我已经用完了 coln,因为我有大约 200 列要压缩。
我已经尝试了一些事情,如果我想压缩行,我可以使用 STRING_AGG()示例
另外我可以这样做:
SELECT
CONCAT(col1,", ",col2,", ",col3,", ",coln) #ect.
FROM mytable
但是,这将涉及手动写出每个列名,这是不可行的。有没有更好的方法可以理想地为整个桌子实现这一目标。
此外,如果任何值为 NULL,CONCAT 将返回 NULL。
解决方案
推荐阅读
- c# - C#中读取循环的条件
- typescript - 我运行了我使用 jest 编写的测试,我收到了一个意外错误 `TypeError: p.replace is not a function`
- android - Android Q:如何从特定目录获取图像列表
- sql-server - SQL查询来计算行与前一行以及缺失行的总和
- java - 已弃用的新 Double(double) 的替代方案
- java - 将用户输入文本复制到输出文本文件(java)
- python - python解析来自eurostat sdmx的xml文件
- file - base64 到 java6 中的文件,数据长于 65000
- java - 在改造 http post 请求中设置标头
- sharepoint-2013 - 如何在 2013 年创建工作流以在一个月内发送多封电子邮件