You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery SQL如何将多code列整形为单列且列名作为值

BigQuery 宽表转长表实现方案

方案1:使用UNPIVOT语法(推荐,适配code列数量多的场景)

你可以直接用BigQuery原生的UNPIVOT语法完成行列转换,代码如下:

SELECT 
  id,
  REGEXP_EXTRACT(code_col, r'code_(\d+)') AS code
FROM 
  你的数据集名.你的表名
UNPIVOT (
  flag FOR code_col IN (code_44145, code_44146, code_44207, code_44208)
)
WHERE flag = 1

逻辑说明:UNPIVOT会把你指定的所有code_开头的列转为行,code_col字段存储原列名,flag存储原列对应的值,过滤出flag=1的行后,用正则提取列名里的数字即可得到目标code字段。

方案2:CASE WHEN写法(适配列数少的场景)

如果你的code列数量很少,可以用更直观的CASE WHEN判断实现:

SELECT
  id,
  CASE
    WHEN code_44145 = 1 THEN '44145'
    WHEN code_44146 = 1 THEN '44146'
    WHEN code_44207 = 1 THEN '44207'
    WHEN code_44208 = 1 THEN '44208'
  END AS code
FROM 你的数据集名.你的表名

因为你已经提前预处理过数据,不会出现同一行多个code列值为1的情况,不需要额外过滤空值。

内容的提问来源于stack exchange,提问作者Dylan Russell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:39:04