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

SQL实现多列数据转单列输出的SELECT语句编写咨询

实现方案

你需要实现的是**逆透视(UNPIVOT)**操作,属于SQL标准集合操作,执行效率远高于游标遍历,不同场景下的实现写法如下:

全数据库通用兼容写法

所有关系型数据库都支持该写法,不需要依赖数据库特有语法,性能表现稳定:

SELECT id, d1 AS `column 1` FROM 你的表名 WHERE d1 IS NOT NULL AND TRIM(d1) != ''
UNION ALL
SELECT id, d2 AS `column 1` FROM 你的表名 WHERE d2 IS NOT NULL AND TRIM(d2) != ''
ORDER BY id;

如果不需要保留重复值,可以将UNION ALL替换为UNION即可,对应执行效率会略低。如果需要和示例输出顺序完全对齐,可以调整排序规则为ORDER BY id, CASE WHEN 来源列 = 'd1' THEN 1 ELSE 2 END, column 1``。

主流数据库特有简化写法

MySQL 8.0+、PostgreSQL、Oracle、SQL Server都支持原生UNPIVOT语法,写法更简洁:

SELECT id, `column 1`
FROM 你的表名
UNPIVOT (
    `column 1` FOR 来源列 IN (d1, d2)
) AS unpvt
WHERE `column 1` IS NOT NULL AND TRIM(`column 1`) != ''
ORDER BY id;

SQL Server环境下仅需要将语句中的反引号替换为方括号即可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:06:04