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

如何在BigQuery中使用UNNEST展开行,同时让部分字段仅显示在单行

解决方案

可以通过窗口函数ROW_NUMBER()给每组展开后的行编号,再结合CASE语句控制字段显示,实现仅组内第一行展示notes和fru的效果,具体SQL如下:

SELECT
  parent,
  child,
  name,
  CASE WHEN row_num = 1 THEN notes ELSE NULL END AS notes,
  CASE WHEN row_num = 1 THEN fru ELSE NULL END AS fru
FROM (
  SELECT
    parent,
    child,
    name,
    notes,
    fru,
    -- 按原始行的唯一标识分组,给展开后的行生成序号
    ROW_NUMBER() OVER (PARTITION BY parent, child ORDER BY idx) AS row_num
  FROM plm-wave-dev.data_migration_sandbox.ref_des_not_empty,
       UNNEST(GENERATE_ARRAY(1, qty)) AS idx
) t

关键逻辑说明

  • 子查询中:通过PARTITION BY parent, child将同一原始行展开的所有行归为一组(如果你的表有更精准的唯一主键,比如id,替换这里的分组字段即可),ROW_NUMBER()会给每组内的行按idx(展开的数组元素)生成从1开始的序号。
  • 外层查询中:用CASE判断序号是否为1,仅在第一行保留notes和fru的值,其余行设为NULL,达到你要的显示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:22:07