有没有一种方法可以将3到3的行值连接起来?

问题描述 投票:1回答:1

正如我在标题中提到的,我需要从前3行,然后是后3行等开始获取值,并将它们连接成行。

示例

输入:

column  
-------
Mu1
Mu2
Mu3
Mu4
Mu5
Mu6
Mu7
Mu8
Mu9

输出:

Column
------------
Mu1,Mu2,Mu3
Mu4,Mu5,Mu6 
Mu7,Mu8,Mu9

非常感谢您,如果我以错误的方式张贴了一些信息,这是我的第一个问题。

sql sql-server tsql sql-server-2017
1个回答
1
投票

您可以在CTE中使用窗口功能(row_number)为您的每一行分配行号。

然后您可以将group bystring_agg一起使用,以将您的值一次连接3行:

declare @t table (col varchar(5))
insert into @t
values
('Mu1'),
('Mu2'),
('Mu3'),
('Mu4'),
('Mu5'),
('Mu6'),
('Mu7'),
('Mu8'),
('Mu9')

;with grp as 
(
   select col,
     rn = row_number() over (order by col)
   from @t
)
select 
    string_agg(col, ',') as [Column]
from grp
group by (rn -1)/ 3

结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.