iT邦幫忙

0

T-SQL:如何將整欄資料合併

各位好

如果我有一個欄位如下:

DocNum

386
352
385

小弟想把DocNum整欄的資料合併變成:
AllNumber

386,352,385

不知道該怎麼寫,還請各位網大指教,謝謝!!

2 個回答

5
純真的人
iT邦大師 2 級 ‧ 2018-06-20 09:28:41
最佳解答

要先把數值轉換成文字~才可以整併

declare @Tmp table(
	DocNum int
)

insert into @Tmp
values(386)
,(352)
,(385)

select STUFF(
	(
	select ',' + Convert(varchar,DocNum)
	from @Tmp
	for xml path('')
	)
,1,1,''
) as AllNumber

https://ithelp.ithome.com.tw/upload/images/20180620/20061369lLN0RPHPpn.png

看更多先前的回應...收起先前的回應...
暐翰 iT邦大師 1 級 ‧ 2018-06-20 09:34:26 檢舉

沒看到大大已經回答問題了 /images/emoticon/emoticon46.gif

Homura iT邦高手 1 級 ‧ 2018-06-20 09:35:34 檢舉

回的好快才剛解完/images/emoticon/emoticon06.gif

哈~我剛好看到0.0||

rogermou iT邦新手 4 級 ‧ 2018-06-20 09:57:39 檢舉

感恩謝謝

5
暐翰
iT邦大師 1 級 ‧ 2018-06-20 09:32:13
select AllNumber = STUFF(
   	(
      SELECT  ',' + cast([DocNum] AS VARCHAR )  
      FROM  T  
      FOR XML PATH('')
    ),1,1,''
)  

結果:

AllNumber  
-----------
386,352,385

線上測試連結

看更多先前的回應...收起先前的回應...

這也是一個方式~~

暐翰 iT邦大師 1 級 ‧ 2018-06-20 09:38:25 檢舉

純真的人大大,他應該需要最後一個','去掉
需要修改一點script

那我再調整一下~~XD

小火車 iT邦新手 5 級 ‧ 2018-06-20 10:47:18 檢舉

不好意思 請問大大們 ,1,1,'' 是什麼意思?用意是在做什麼呢??

暐翰 iT邦大師 1 級 ‧ 2018-06-20 10:52:27 檢舉

fain730826

因為單純用FOR XML PATH('')相加得出的字串最前面會多一個,

所以用STUFF(字串, 1, 1,'')來刪除多餘的,

SQL Server STUFF() Function

可以在w3c看到介紹
STUFF(要取代字串, 從第幾位開始, 字串長度,取代的字串)

小火車 iT邦新手 5 級 ‧ 2018-06-20 11:03:13 檢舉

感謝大大

我要發表回答

立即登入回答