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

SQL中如何基于指定ID实现行数据转对应值的透视表?

正确实现批量数据表透视的T-SQL写法

你当前PIVOT查询只返回1行结果的核心原因是:子查询中没有提供行组标识,聚合函数会合并所有同given_id的记录,无法拆分出你需要的多组行结果。

你需要先给属于同一行组的记录添加统一的分组编号,再进行透视,参考代码如下:

SELECT [1], [2], [3]
FROM
(
  SELECT 
    given_id, 
    data,
    -- 给同一个given_id下的记录按顺序编号,同组记录编号一致
    -- 若有实际排序逻辑可将ORDER BY后的内容替换为对应排序字段
    ROW_NUMBER() OVER (PARTITION BY given_id ORDER BY (SELECT 0)) AS group_rn
  FROM example_table
) d
PIVOT
(
  MIN(data)
  -- 注意原代码这里漏了空格,需要加在given_id和in之间
  FOR given_id IN ([1], [2], [3])
) piv;

代码逻辑说明

  • 内层查询新增的group_rn字段会给属于同一行组的记录分配相同的编号:第一组example_val1_*的group_rn均为1,第二组example_val2_*的group_rn均为2
  • PIVOT操作会自动将未出现在聚合函数、FOR子句中的group_rn作为分组依据,最终每个分组对应一行透视结果
  • 第二组没有given_id=3的记录,对应位置自动返回NULL,完全匹配你期望的输出效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:09:03