[英]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.