我有这种格式的表格值
sam
jack
sam
john
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email
from PostedCommentMaster where article_id = @id
我如何获得不同的价值
sam,jack,john
像这样。
答案 0 :(得分:19)
您可以将select语句包装到子选择中并对结果应用coalesce。
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','') + user_email
from (select distinct user_email
from PostedCommentMaster
where article_id = @id) pc
请注意,这使用SQL Server的未记录功能将结果连接成一个字符串。虽然我找不到它的链接,但我记得读到你不应该依赖这种行为。
更好的选择是使用FOR XML
语法返回连接字符串。 A search on SO会返回您可以用作示例的多个结果。
答案 1 :(得分:3)
你去吧
Declare @name varchar(max)
select
@name = COALESCE(@name + ', ','')+name from (select distinct user_email
from
PostedCommentMaster) as t
where
article_id = @id
答案 2 :(得分:0)
您可以将group by
用于唯一值。
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email
from PostedCommentMaster where article_id = @id
group by user_email
答案 3 :(得分:0)
最好,您可以使用这个。
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email from (select distinct user_email
from PostedCommentMaster where article_id = @id ) as tblTemp
答案 4 :(得分:0)
选择不同的@name = COALESCE(@name +',','')+ user_email 来自PostCommentMaster,其中article_id = @id
答案 5 :(得分:0)
我在同一问题上陷入困境。因此,我的解决方案是-
添加合并查询。
create table #emailList (user_email varchar(200))
insert into #emailList select distinct user_email from PostedCommentMaster
where article_id = @id
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email
from #emailList
这也有助于使用联接从多个表中获取数据。