【问题标题】:Is there a way to join row values from 3 to 3?有没有办法将行值从 3 连接到 3?
【发布时间】:2020-05-18 17:58:54
【问题描述】:

正如我在标题中提到的那样,我需要从前 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】:

    您可以在 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
    

    结果:

    【讨论】:

    • 我非常感谢安德里亚!!这非常有效,这是我的工作任务,这让我疯狂了好几天。你真是个天才!!!。
    猜你喜欢
    • 1970-01-01
    • 2023-02-10
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2011-12-24
    • 1970-01-01
    • 2013-06-13
    相关资源
    最近更新 更多