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

Standard SQL中UNNEST重复字段时仅首个元素保留原值的实现方法

Standard SQL实现数组展开后仅单行保留原值的查询方案

你可以通过UNNEST搭配位置偏移量来实现需求,具体查询语句如下:

SELECT
  Id,
  service AS Services,
  -- 首个展开元素保留原值,其余设为0
  CASE WHEN offset = 0 THEN Value ELSE 0 END AS Value,
  Type
FROM
  -- 替换为你的实际表名
  your_dataset.your_table_name,
  UNNEST(Services) AS service WITH OFFSET offset
-- 保持输出顺序和预期结果一致
ORDER BY
  Id, offset

说明

  • WITH OFFSET会返回数组元素对应的下标索引,Standard SQL中数组下标默认从0开始,因此判断offset=0的行保留原值即可
  • 如果你不需要固定首个元素保留原值,只要每行原始数据对应展开后的任意一行保留原值,也可以用窗口函数实现:
SELECT
  Id,
  service AS Services,
  CASE WHEN ROW_NUMBER() OVER (PARTITION BY Id) = 1 THEN Value ELSE 0 END AS Value,
  Type
FROM
  your_dataset.your_table_name,
  UNNEST(Services) AS service
ORDER BY
  Id

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:33:03