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

SQL行转列查询:单表/多表实现多行Value值转多列展示

行转列SQL实现方案

你需要的是典型的行转列需求,将同一UniqueID下的多条Value记录转换为多列展示,以下分别提供单表、多表场景的实现语句:

单表实现

假设你的原始数据都存在同一张表original_table中,表结构为:UniqueID(唯一ID)、Value(对应值)。

通用写法(支持MySQL8.0+、PostgreSQL、Oracle、SQL Server等所有支持窗口函数的数据库)

SELECT
  UniqueID,
  MAX(CASE WHEN rn = 1 THEN Value END) AS Value1,
  MAX(CASE WHEN rn = 2 THEN Value END) AS Value2,
  MAX(CASE WHEN rn = 3 THEN Value END) AS Value3
FROM (
  -- 给同一UniqueID下的每一行生成序号,排序规则可按需调整
  SELECT
    UniqueID,
    Value,
    ROW_NUMBER() OVER (PARTITION BY UniqueID ORDER BY Value DESC) AS rn
  FROM original_table
) t
GROUP BY UniqueID
ORDER BY UniqueID;

低版本MySQL兼容写法(不支持窗口函数的场景)

SELECT
  UniqueID,
  SUBSTRING_INDEX(GROUP_CONCAT(Value ORDER BY Value DESC), ',', 1) AS Value1,
  IF(
    LENGTH(GROUP_CONCAT(Value ORDER BY Value DESC)) - LENGTH(REPLACE(GROUP_CONCAT(Value ORDER BY Value DESC), ',', '')) >= 1,
    SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(Value ORDER BY Value DESC), ',', 2), ',', -1),
    NULL
  ) AS Value2,
  IF(
    LENGTH(GROUP_CONCAT(Value ORDER BY Value DESC)) - LENGTH(REPLACE(GROUP_CONCAT(Value ORDER BY Value DESC), ',', '')) >= 2,
    SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(Value ORDER BY Value DESC), ',', 3), ',', -1),
    NULL
  ) AS Value3
FROM original_table
GROUP BY UniqueID
ORDER BY UniqueID;

多表实现

假设你的数据拆分在两张表中:

  • 主表unique_id_main:存储所有唯一ID,仅含UniqueID字段
  • 从表value_detail:存储每个ID对应的多个值,含UniqueID、Value字段,通过UniqueID与主表关联
SELECT
  m.UniqueID,
  MAX(CASE WHEN d.rn = 1 THEN d.Value END) AS Value1,
  MAX(CASE WHEN d.rn = 2 THEN d.Value END) AS Value2,
  MAX(CASE WHEN d.rn = 3 THEN d.Value END) AS Value3
FROM unique_id_main m
LEFT JOIN (
  SELECT
    UniqueID,
    Value,
    ROW_NUMBER() OVER (PARTITION BY UniqueID ORDER BY Value DESC) AS rn
  FROM value_detail
) d ON m.UniqueID = d.UniqueID
GROUP BY m.UniqueID
ORDER BY m.UniqueID;

如果后续需要展示超过3个Value列,只需要新增对应序号的CASE WHEN分支即可,无需调整其他逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 06:51:03