正如我在标题中提到的,我需要从前3行获取值,然后从后3行获取值,然后将它们连接成行。
示例
输入:
column
-------
Mu1
Mu2
Mu3
Mu4
Mu5
Mu6
Mu7
Mu8
Mu9
输出:
Column
------------
Mu1,Mu2,Mu3
Mu4,Mu5,Mu6
Mu7,Mu8,Mu9
非常感谢您,如果我以错误的方式发布了一些信息,这是我的第一个问题。
答案 0 :(得分:1)
您可以在CTE中使用窗口函数(row_number
)为每行分配一个行号。
然后,您可以将group by
与string_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
结果: