繁体   English   中英

如果使用逗号分隔符返回了多行,则将 SQL 存储过程的 output 组合到单行

[英]Combine output of SQL stored proc to single row if multiple rows have been returns using comma delimiter

我正在尝试编写一个存储过程,它以这样一种方式返回值:如果几行除了几列之外都具有相同的值,那么 SP 应该返回单行,其中两行之间具有不同值的列合并到一个分隔中用逗号 例如:当我运行 SP 时,它返回 2 行,如下所示。 这两行都有所有列,但有一列相似。

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

现在我想要的 output 是

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

有人知道如何实现这一目标。

有很多方法可以将行连接成字符串。 这是一种方法:)

您可以阅读更多信息: http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

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 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM