2008年03月19日

將多筆相同鍵值的欄位內容合併

常常遇到這樣的問題,如何將相同鍵值的藍位內容值串接 ?
舉例來說 TableA 如下:

ID Type DESC
1 cpu 處理器
1 cpu 雙核心
1 cpu 800外頻
2 HD 硬碟
2 HD 500G
2 HD 5400轉

希望將欄位內容串接並以【,】分隔,在 SQL Server 2005 可以利用 XML PATH 來將功能實作,如:

ID Type DESC
1 cpu 處理器,雙核心,800外頻
2 HD 硬碟,500G,5400轉

   1:  SELECT T1.id, T1.type,
   2:  (
   3:    STUFF( (
   4:             SELECT ',' + [DESC]
   5:             FROM   @TABLEA T2
   6:             WHERE  T2.id = T1.id
   7:             FOR XML PATH('')
   8:            ), 1, 1, ''
   9:         )
  10:  ) AS [DESC]
  11:  FROM @TABLEA T1
  12:  GROUP BY id, type

 

如果只是想單純地將欄位內容單純串接,則可以用下列做法:

ID Type DESC
1 cpu 處理器雙核心800外頻
2 HD 硬碟500G5400轉

   1:  SELECT T1.id, T1.type,
   2:  (
   3:    SELECT [DESC] + ''
   4:    FROM   @TABLEA T2
   5:    WHERE  T2.id = T1.id
   6:    FOR XML PATH('')
   7:  ) AS [DESC]
   8:  FROM @TABLEA T1
   9:  GROUP BY id, type
如果是 SQL Server 2000 則請參考 Concatenate the values in a column in SQL Server 2000 and 2005 文章
關於 PATH SUTFF 用法則參考:

 





Posted by chhuang0123 at 樂多Roodo! │23:37 │回應(0)引用(0)ADO.NET
樂多分類:網路/3C 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/5724427