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

SQL如何将同ID多行数据聚合为单行并拆分answer为多列

SQL行转列问题解决方案

问题原因

你编写的原始查询没有添加聚合分组逻辑,会逐行判断条件:每一行仅能匹配一个question_id的判断规则,因此另一列会返回空值,也无法实现同id多行合并的效果。

调整后SQL写法

通用兼容写法(支持所有主流SQL数据库)

使用聚合函数包裹CASE表达式,最后按id分组即可:

SELECT 
  id, 
  MAX(CASE WHEN question_id = 123 THEN answer END) AS answer1, 
  MAX(CASE WHEN question_id = 456 THEN answer END) AS answer2 
FROM test_data
GROUP BY id

注:此处用MIN()替代MAX()也可得到相同结果,因为同一个id、同一个question_id下仅对应唯一的answer值,聚合函数的作用是忽略NULL值、提取对应的有效值。

PIVOT语法写法(支持行转列语法的数据库可使用)

如果你用的数据库支持PIVOT语法,也可以用专用行转列写法,逻辑完全一致:

SELECT *
FROM test_data
PIVOT (
  MAX(answer)
  FOR question_id IN (123 AS answer1, 456 AS answer2)
)

注:不同数据库的PIVOT语法细节存在差异,可根据你使用的数据库类型做对应调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:36:05