在 SQL Server 中将数据从一列拆分为多行

Posted

技术标签:

【中文标题】在 SQL Server 中将数据从一列拆分为多行【英文标题】:Splitting data from one column into multiple rows in SQL Server 【发布时间】:2021-03-08 16:40:57 【问题描述】:

我是 SQL 的初学者,很遗憾我无法解决问题。我有一个系统表中的列名列表,我想根据列名的序列将其插入到表的单独行中。

原表:

Column name
001000
001100
001200
002000
002100
002200
002300

目标表:

Column 1 Column 2 Column 3 Column 4
001000 001100 001200 NULL
002000 002100 002200 002300
...... ...... ...... ......
022000 022100 022200 022300

原始表中有大量行,因此将这些数字分组是非常具有挑战性的。我已经研究过 PIVOT 功能,但这并没有解决这个问题。

不幸的是,由于我是初学者,我也无法将其放入代码中。任何关于推荐我应该研究哪些函数以便我可以开始编写一些代码的帮助都会非常有帮助。任何指向解决方案的指针也非常感谢。

【问题讨论】:

【参考方案1】:

条件聚合应该做你想做的事:

select max(case when seqnum = 1 then column end),
       max(case when seqnum = 2 then column end),
       max(case when seqnum = 3 then column end),
       max(case when seqnum = 4 then column end)
from (select t.*,
             row_number() over (partition by left(column, 3) order by column) as seqnum
      from t
     ) t
group by left(column, 3)

【讨论】:

以上是关于在 SQL Server 中将数据从一列拆分为多行的主要内容,如果未能解决你的问题,请参考以下文章

如何在标准sql-大查询中将一列拆分为多列

在SQL过程中将一列中的逗号分隔值拆分为多列

如何在同一个表中将数据从一列复制到另一列?

SQL Server中将多行数据拼接为一行数据(一个字符串

sql如何把行拆分为几行

sql数据拆分