我在這個格式我怎樣才能獲得不同的值在COALESCE()
sam
jack
sam
john
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email
from PostedCommentMaster where article_id = @id
表值我怎樣才能獲得明顯的價值
sam,jack,john
這樣。
我在這個格式我怎樣才能獲得不同的值在COALESCE()
sam
jack
sam
john
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email
from PostedCommentMaster where article_id = @id
表值我怎樣才能獲得明顯的價值
sam,jack,john
這樣。
你可以用select語句爲子查詢,並將結果應用於聚結。
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返回,你可以作爲一個例子使用多個結果。
它的工作謝謝.. – 2012-07-13 09:40:59
在這裏你去
Declare @name varchar(max)
select
@name = COALESCE(@name + ', ','')+name from (select distinct user_email
from
PostedCommentMaster) as t
where
article_id = @id
可以使用group by
唯一值。
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email
from PostedCommentMaster where article_id = @id
group by user_email
爲什麼你使用'COALESCE'這裏?你首先聲明@name變量,然後立即檢查它是否爲空。這將永遠是空的,因爲它永遠不會設置爲任何 – paul 2012-07-13 09:33:44
@保羅 - 這是一個(無證)的方式從ResultSet連接一列。 – 2012-07-13 09:34:46
我明白了,所以'@ name'實際上是每行重新評估返回。聰明。 – paul 2012-07-13 09:38:25