一.定義表變數
declare @t1 table
(userid int ,
username nvarchar(50),
cityname nvarchar(50)
);insert into @t1 (userid,username,cityname) values (1,'a','上海')
insert into @t1 (userid,username,cityname) values (2,'b','北京')
insert into @t1 (userid,username,cityname) values (3,'c','上海')
insert into @t1 (userid,username,cityname) values (4,'d','北京')
insert into @t1 (userid,username,cityname) values (5,'e','上海')
select * from @t1
-----最優的方式
select cityname,stuff((select ',' + username from @t1 subtitle where cityname=a.cityname for xml path('')),1, 1, '') as a
from @t1 a
group by cityname
----第二種方式
select b.cityname,left(userlist,len(userlist)-1)
from (
select cityname,(select username+',' from @t1 where cityname=a.cityname for xml path('')) as userlist
from @t1 a
group by cityname
) bstuff(select ',' + fieldname from tablename for xml path('')),1,1,'')
這一整句的作用是將多行fieldname欄位的內容串聯起來,用逗號分隔。
for xml path是sql server 2005以後版本支援的一種生成xml的方式。
stuff函式的作用是去掉字串最前面的逗號分隔符。
效果圖:
sql裡將重複行資料合併為一行,資料用逗號分隔
一.定義表變數 declare t1 table userid int username nvarchar 50 cityname nvarchar 50 insert into t1 userid,username,cityname values 1,a 上海 insert into t1 use...
T SQL 將一列多行資料合併為一行
sql server在進行資料遷移 和報表處理的時候會遇到將一列多行資料拼接為乙個字串的情況,為了處理這個問題,在網上找了一些相關的資料,提供兩種方法,供遇到類似問題的朋友們參考,也藉此加深自己的印象。table sc student course 張三大學語文 李四大學語文 張三書法鑑賞 張三 欣...
T SQL 將一列多行資料合併為一行
sql server 在進行資料遷移和報表處理的時候遇到將一列多行資料拼接為乙個字串的情形,查詢相關的資料整理如下,提供兩種方法。table sc student course 張三大學語文 李四大學語文 張三書法鑑賞 張三 欣賞 李四電影賞析 期望得到的結果 student course 張三大學...