跳到主要內容

[SQL server] SQL :Multiple rows to one column /多行資料整合成一個欄位

在SQL查詢的時候
會有需要將多行資料變成一個單一字串
以利於使用
這時候可以藉由For XML ,跟 STUFF()的配合做到這個功能
例如:

 

SELECT itemNO FROM Item WHERE ItemType='Food'
取得的資料可能為

itemNO
------------------
Apple0001
Banana0002
Orange0003

如果要整合成一行就可下以下的SQL

SELECT STUFF((SELECT ''+itemNO FROM Item  WHERE ItemType='Food' FOR XML PATH('')),1,1,'') V

這樣的結果是

    V
----------------------------------------------
Apple0001,Banana0002,Orange0003

 

如果配合關連性的表格使用
則可以這樣寫

select ProductName ,
  ItemNO=STUFF((SELECT ''+itemNO FROM Item  WHERE ItemType=P.Type FOR XML PATH('')),1,1,'')
from Product  p
where pID='ABC'
ProductName  |   ItemNO
-------------+-------------
  SunShine   |   Apple0001,Banana0002




For XML STUFF

留言