iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
自我挑戰組

C# 和 SQL 探索之路系列 第 27

Day 27: SQL 語法: FOR XML PATH

  • 分享至 

  • xImage
  •  

今天是第 27 天 ~~


在 SQL Server 中,可以用 FOR XML PATH 語法,將多筆資料合併成一筆,輸出至同一欄位。

假設 Options 資料表有以下資料:

ID City Area
1 桃園
2 台北
3 台中

以下是基本語法,用逗號將找到的所有選項合併在同一欄位:

SELECT ',' + A.City FROM Options A
FOR XML PATH('')

會輸出下列結果

,桃園,新竹,台中

可以加入子查詢 (需使用 DISTINCT 過濾重複資料),使用其它欄位分類要合併的欄位,在此使用 Area 欄位分類:

SELECT DISTINCT B.Area, (  
    SELECT ',' + A.City FROM Options A
      WHERE A.Area = B.Area
    FOR XML PATH('')
) AS City
FROM Options B

結果會是:

Area City
,桃園,台北
,台中

可以再使用 STUFF 指令 (將第一個字串刪除指定長度的字元,結尾插入另一個字串) 去除一開始的逗號。

SELECT DISTINCT B.Area, STUFF((  
    SELECT ',' + A.City FROM Options A
      WHERE A.Area = B.Area
    FOR XML PATH('')
), 1, 1, '') AS City
FROM Options B
Area City
桃園,台北
台中

參考資料


上一篇
Day 26: SQL Having 語法與列出重複資料
下一篇
Day 28: 寫出好讀的 SQL
系列文
C# 和 SQL 探索之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言