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