sql - 有没有办法将行值从 3 连接到 3?
问题描述
正如我在标题中提到的,我需要从前 3 行中获取值,然后是后 3 行,然后再将它们加入行中。
例子
输入:
column
-------
Mu1
Mu2
Mu3
Mu4
Mu5
Mu6
Mu7
Mu8
Mu9
输出:
Column
------------
Mu1,Mu2,Mu3
Mu4,Mu5,Mu6
Mu7,Mu8,Mu9
非常感谢,如果我以错误的方式发布内容,我很抱歉,这是我在这里的第一个问题。
解决方案
您可以在 CTE 中使用窗口函数 ( row_number
) 为您的每一行分配一个行号。
然后您可以使用group by
with一次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
结果:
推荐阅读
- opentracing - 如何在正在运行的应用程序中启用和禁用跟踪
- android - 迁移未正确处理 Room 数据库 (java.lang.IllegalStateException)
- websocket - STM32 + ESP8266 Websocket 客户端从服务器获取 HTTP/1.1 400 Bad Request
- javascript - 如何在 Web 表单中使用 javascript 隐藏复选框和复选框文本
- c# - 在 Windows 10 中从 Windows 服务启动交互式应用程序
- java - 如何从一个类 java 访问变量或函数?
- typescript - 使用 Ace 编辑器/任何 Web IDE 进行 TypeScript 语法验证?
- android - 非法状态异常:函数 =
,计数 = 3,索引 = 3 - java - 如何打开流
- javascript - 受密码保护的 Excel 文件阅读器