如果使用逗号分隔符返回了多行,则将SQL存储过程的输出合并到一行

如果使用逗号分隔符返回了多行,则将SQL存储过程的输出合并到一行,sql,stored-procedures,return-value,coalesce,Sql,Stored Procedures,Return Value,Coalesce,我正在尝试编写一个存储过程,该过程返回值的方式是,如果两行中除少数列外都有相同的值,则SP应返回一行,其中两行之间的列具有不同的值,并合并为一行,以逗号分隔。例如:当我运行SP时,它返回两行,如下所示。这两行都有所有列,但有一列类似 col1 col2 col3 col4 col5 col6 col7 ------------------ ------ --------------

我正在尝试编写一个存储过程,该过程返回值的方式是,如果两行中除少数列外都有相同的值,则SP应返回一行,其中两行之间的列具有不同的值,并合并为一行,以逗号分隔。例如:当我运行SP时,它返回两行,如下所示。这两行都有所有列,但有一列类似

col1               col2   col3               col4                    col5  col6         col7
------------------ ------ ------------------ ----------------------- ----- ------------ --------------
Remote Observation sdgfdg Remote Observation 2011-07-21 00:00:00.000 14.00 Inbound Call Order
Remote Observation sdgfdg Remote Observation 2011-07-21 00:00:00.000 14.00 Inbound Call Status Inquiry
现在我想要的输出是

col1               col2   col3               col4                    col5  col6         col7
------------------ ------ ------------------ ----------------------- ----- ------------ ---------------------
Remote Observation sdgfdg Remote Observation 2011-07-21 00:00:00.000 14.00 Inbound Call Order, Status Inquiry

有人知道如何做到这一点。

有很多方法可以将行压缩成字符串。这里有一个方法:)

您可以在以下网址阅读更多内容:


如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以很好地格式化和语法突出显示它!
DECLARE @TestTable TABLE (
    col1 varchar(50),
    col2 varchar(50),
    col3 varchar(50),
    col4 varchar(50),
    col5 varchar(50),
    col6 varchar(50),
    col7 varchar(50)
)

insert into @TestTable 
values
('Remote Observation','sdgfdg','Remote Observation','2011-07-21 00:00:00.000 ','14.00','Inbound Call','Order'),
('Remote Observation','sdgfdg','Remote Observation','2011-07-21 00:00:00.000 ','14.00','Inbound Call','Status Inquiry'),
('Remote Observation','sdgfdg','Remote Observation','2011-07-21 00:00:00.000 ','14.00','Inbound Call','Status Inquiry')


select col1,col2,col3,col4,col5,col6,LEFT(col7,LEN(col7)-1) col7
from
(
    select col1,col2,col3,col4,col5,col6,
    ( 
        select distinct col7 + ',' 
        from @TestTable t2
        where t2.col1 = t1.col1
        AND t2.col2 = t1.col2
        AND t2.col3 = t1.col3
        AND t2.col4 = t1.col4
        AND t2.col5 = t1.col5
        AND t2.col6 = t1.col6
        for xml path('') 
    ) col7
    from @TestTable t1
    group by col1,col2,col3,col4,col5,col6
)  source