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

如何编写SQL将单列分组数据转换为多列并排展示

实现思路

核心是把两个Class分组下的记录按内部顺序横向拼接,操作逻辑如下:

  • 用窗口函数ROW_NUMBER()给每个Class内部的行按ID排序生成唯一匹配序号
  • 分别筛选Class=1和Class=2的两个子集,按生成的序号做等值连接,就能得到并排展示的效果

可直接使用的SQL语句

以下SQL适配MySQL 8.0+/PostgreSQL/SQL Server等支持窗口函数的主流数据库:

WITH ranked_data AS (
    SELECT 
        Class,
        Number,
        ROW_NUMBER() OVER (PARTITION BY Class ORDER BY ID) AS rn
    FROM 替换为你的实际表名
)
SELECT 
    t1.Class AS Column1,
    t1.Number AS Number,
    t2.Class AS Column2,
    t2.Number AS Number
FROM ranked_data t1
INNER JOIN ranked_data t2 
    ON t1.rn = t2.rn 
    AND t1.Class = 1 
    AND t2.Class = 2;

如果使用的是不支持CTE的低版本MySQL,可以用子查询替代实现:

SELECT 
    t1.Class AS Column1,
    t1.Number AS Number,
    t2.Class AS Column2,
    t2.Number AS Number
FROM 
    (SELECT Class, Number, @rn1:=@rn1+1 AS rn FROM 替换为你的实际表名 WHERE Class=1 ORDER BY ID, (SELECT @rn1:=0)) t1
INNER JOIN 
    (SELECT Class, Number, @rn2:=@rn2+1 AS rn FROM 替换为你的实际表名 WHERE Class=2 ORDER BY ID, (SELECT @rn2:=0)) t2
ON t1.rn = t2.rn;

注意事项

如果两个Class的行数不一致,最终输出行数会和行数更少的Class保持一致,多出来的行会自动被截断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:57:03