2016-02-06 44 views
1

需要使用什麼樣的SQL按GroupID進行分組,然後將所有Name值串聯到一行,並用逗號分隔這些值?將SQL彙總列值設置爲1 concatonated值

所以這個:

GroupName GroupID Name 
All screens 139091 Business 
All screens 139091 Business 
All screens 139091 Cafeteria/Bathrooms 
All screens 139091 Lobby 

會變成這樣:

GroupName GroupID Name 
All screens 139091 Business, Cafeteria/Bathrooms, Lobby 

這將需要儘可能多的羣ID的完成,因爲在表中,我猜測跳躍式兩份。這在C#端更好嗎?在SQL版本是2008 R2

GROUP_CONCAT不使用存在在SQL Server

+3

Google:「SQL Server聚合字符串連接」。 –

+1

[在Transact-SQL中連接行值](https://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/)最常見的是XML + STUFF(避免重複在子查詢中使用DISTINCT) – lad2025

回答

2

希望這將幫助你。

SELECT GroupName, GROUPID , STUFF((SELECT ',' + NAME FROM #TAB FOR XML PATH('')),1,1,'') 
    FROM #TAB GROUP BY GROUPNAME, GROUPID 
+1

您需要爲嵌套查詢添加一個WHERE子句......這不會像預期的那樣工作,否則當您擁有不同的組ID /名稱時。 – Lucero

+0

@Lucero WHERE標準需要什麼? – JoJo

+1

@JoJo可能GroupID是你想要加入的列:'SELECT T1.GroupName,T1.GroupID,STUFF((SELECT','+ T2.NAME FROM #TAB T2 WHERE T1.GroupID = T2.GroupID FOR XML PATH ('')),1,1,'')FROM #TAB T1 GROUP BY T1.GroupName,T1.GroupID' – Lucero