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

BigQuery如何使用pivot/unpivot实现列转行、行转列转换?

实现方案

你需要先执行UNPIVOT将原有指标列转为行,再执行PIVOT将SKU值转为列,两步即可完成转换,这是BigQuery下最直观的实现方式。

报错原因说明

你原有代码的报错来自两个问题:

  • 仅查询了ds_hrc_shm单个指标列,未包含其他需要转置的指标列
  • PIVOT的IN子句不需要加方括号,直接用单引号包裹SKU取值即可

完整实现代码

SELECT *
FROM (
  -- 选取所有需要用到的原始列
  SELECT SKU, `Ds Hrc Shm`, `Ds Orc Cwp`, `Ds Orc Mwp`
  FROM `manual_input.sku_translations`
) 
-- 第一步:UNPIVOT将指标列转成行维度
UNPIVOT (
  metric_value FOR metric_name IN (
    `Ds Hrc Shm`, 
    `Ds Orc Cwp`, 
    `Ds Orc Mwp`
  )
)
-- 第二步:PIVOT将SKU值转成列维度
PIVOT (
  SUM(metric_value) FOR SKU IN (
    'DB-MIX-HTS',
    'DB-ORC-TUS'
  )
)

扩展说明

如果SKU的取值不固定,你可以使用BigQuery动态SQL自动生成IN子句的取值列表,避免手动列全所有SKU值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:09:03