使用回车换行符将多行合并到一列中

Osp*_*rey 10 sql-server

下面的代码(我从这里得到的)很好地将多个字段合并在一起,用逗号分隔它们.

select player,
  stuff((SELECT distinct ', ' + cast(score as varchar(10))
       FROM yourtable t2
       where t2.player = t1.player
       FOR XML PATH('')),1,1,'') 
from yourtable t1
group by player
Run Code Online (Sandbox Code Playgroud)

我需要用回车换行替换逗号.我尝试了下面的代码,但它开始用这些字符分隔条目:"#x0D;"

select player,
  stuff((SELECT distinct CHAR(13)+CHAR(10) + cast(score as varchar(10))
       FROM yourtable t2
       where t2.player = t1.player
       FOR XML PATH('')),1,1,'') 
from yourtable t1
group by player
Run Code Online (Sandbox Code Playgroud)

我怀疑问题出在"FOR XML PATH('')),1,1,''",但我不知道要放什么值.

任何帮助将不胜感激.

谢谢!

jer*_*jer 11

您实际上可以替换STUFF结果的逗号.

试试这个:

select player,
  replace(stuff((SELECT distinct ', ' + cast(score as varchar(10))
       FROM yourtable t2
       where t2.player = t1.player
       FOR XML PATH('')),1,1,''), ',', char(13) + char(10))
from yourtable t1
group by player
Run Code Online (Sandbox Code Playgroud)