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

BigQuery行转多列:用序号命名列而非商品名

解决方案(BigQuery)

步骤1:为每个交易下的商品添加序号

先通过窗口函数给同一transaction_id下的商品分配递增序号,确保每个商品有唯一的位置标识:

WITH numbered_items AS (
  SELECT
    transaction_id,
    item_name,
    ROW_NUMBER() OVER (PARTITION BY transaction_id ORDER BY item_name) AS item_seq
  FROM
    `你的项目名.你的数据集名.你的表名`
)

步骤2:透视转换为序号命名的列

利用BigQuery的PIVOT功能,将序号对应的商品值转成以item_name_1、item_name_2等命名的列。示例中最多3个商品,直接指定3个序号即可:

SELECT
  transaction_id,
  item_name_1,
  item_name_2,
  item_name_3
FROM
  numbered_items
PIVOT (
  MAX(item_name) AS item_name
  FOR item_seq IN (1, 2, 3)
)
ORDER BY
  transaction_id;

结果说明

执行上述SQL后,会得到你需要的格式:

transaction_iditem_name_1item_name_2item_name_3
123snacksmarblesnull
124pentooth_brushtooth_paste

如果不需要按item_name排序,可将ORDER BY item_name改为ORDER BY (SELECT NULL),但BigQuery不保证无排序逻辑下的行顺序,建议使用业务上有意义的排序字段。若后续商品数量超过3个,只需在PIVOT的IN子句中添加对应序号(如4、5)即可扩展列数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:50:22