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

SQL Server 2005中如何将单行拆分为多行?含表格转换需求

在SQL Server 2005实现单行转多行的两种方法

在SQL Server 2005里,你可以通过两种实用的方式完成这种单行记录转成键值对多行的需求,我给你详细演示一下:

方法一:使用UNION ALL手动拼接

这种方法直观易懂,兼容性拉满,哪怕是更早的SQL Server版本也能运行,适合列数不多的场景:

SELECT 'Col1' AS heading1, data1 AS heading2
FROM YourTableName
UNION ALL
SELECT 'Col2' AS heading1, data2 AS heading2
FROM YourTableName
UNION ALL
SELECT 'Col3' AS heading1, data3 AS heading2
FROM YourTableName
UNION ALL
SELECT 'Col4' AS heading1, data4 AS heading2
FROM YourTableName
UNION ALL
SELECT 'Col5' AS heading1, data5 AS heading2
FROM YourTableName;

原理很简单:把每一列单独作为一条记录查询出来,再用UNION ALL把所有结果合并成一个结果集。记得把YourTableName替换成你实际的表名哦。

方法二:使用UNPIVOT运算符

SQL Server 2005开始引入了UNPIVOT,专门用来做这种列转行的操作,代码更简洁,适合列数较多的情况:

SELECT 
    heading1, 
    heading2
FROM 
    YourTableName
UNPIVOT
    (heading2 FOR heading1 IN (Col1, Col2, Col3, Col4, Col5)) AS unpvt;

这里的逻辑是:

  • heading2是用来存放原列值的新列名
  • heading1是用来存放原列名的新列名
  • IN()括号里列出你需要转换的所有原列名

⚠️ 注意:使用UNPIVOT时,所有要转换的列必须是相同的数据类型,如果有不同类型,得先通过CAST或CONVERT统一类型后再操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:45:16