前言

前陣子工作上需求,需要做匯出報表功能,要將不同欄位資料合併再一起後匯出,順手記錄一下。

本文

示範資料表如下

我們需要把相同 Level 的欄位匯總再一起,做成一個統計用報表。

首先每個區域後面先加、

select District+'、' from DistrictData

接下來使用

select level,
(
	select District+'、' from DistrictData as B
	where A.Level = B.Level
	FOR XML PATH('')
)AS District
FROM DistrictData AS A
GROUP BY level

即可得到想要的成果。

其中 FOR XML PATH('') 功能是因為如果沒有加的話會出現以下錯誤訊息。

接下來會發現顯示格式不太對,要加上、的部分最後一筆應該要排除。
這時候就可以使用 SUBSTRING

select SUBSTRING('大安區、信義區、松山區、中山區、中正區、',0,LEN('大安區、信義區、松山區、中山區、中正區、')) 

可以得到以下。

SUBSTRING 這個語法中 SUBSTRING(string, start, lenth) ,第1、2個參數代表的是 string 這個字串中要起始的位置為 start , lenth 則為最後要計算數字。
簡單實驗一下

select SUBSTRING('123',0,3) 

這邊我們會得到

參考資料

https://www.1keydata.com/tw/sql/sql-substring.html

https://dotblogs.com.tw/flairming/2014/02/14/143993

https://dotblogs.com.tw/supershowwei/2016/01/26/145353