關於 點部落 團隊
我們是一群普通的程式設計人員,在各自不同的領域發展, 由於對 IT 知識社群發展有一股的熱誠,所以我們一起創造了這個平台, 我們希望透過 點部落平台 能夠創造出更好的 IT 知識技術分享環境。 歡迎您參與點部落,也請給我們意見與指教,讓我們能夠持續的改善, 營造出更好的環境及平台。tw.dotblogs@gmail.com

常用連結

最新回應

先前轉檔時,用到的TSQL,就在這邊獻醜,方法硬了點,希望大家再給一些建議。
首先資料內有許多屬性,客戶那邊轉來的Excel呈現到SQL就類似
image
在第12列中,可以看到這因該是一個一對多的連結,所有會有一個資料表專門存這些屬性,
(原始資料中最後沒有 、 符號,是特別為了等一回的程式先加上去的)
第一難題就來了,左想又想,放了颱風假回家想,要如何把資料先從一列變成多列,
在新增回去呢?
第一個想到就是用C#把資料先叫出來再透過 Split 丟到陣列內,這因該是最快的方法,
但心裡想想,T-SQL 一定可以做的到,只是還沒想到,就六日在家想了想,突然想到可以透過
CTE + while 回圈 試看看。
首先呢,因為我的 while 判讀跟拿資料會需要配合資料 、 這個符號,就直接先把每筆資料後面都加上了、
在來步驟如下
 

--  
DECLARE @ArrayList varchar(3000)
SET @ArrayList= '平版、塊狀、捲、網狀、粉末'

DECLARE @ans Varchar(100)
  -- 當資料有、符號就做處理
WHILE (charindex('!B',@ArrayList)<>0) BEGIN -- 2.取出我要的部分忽略、 SET @ans = SUBSTRING(@ArrayList,0,Charindex('!B',@ArrayList)) PRINT 'ans:'+@ans --塞資料到暫時處理分類的Table  
    --將資料取道第一個資料列
SET @ArrayList = RIGHT(@ArrayList,len(@ArrayList)-Charindex('!B',@ArrayList)) print 'GroupName:' + @ArrayList end 這樣就能看出這樣的效果
image
在 print 改成INSERT INTO 就能夠把這些屬性一筆一筆先塞入暫時的屬性資料表,
在DISTINCT 後,就能夠真正的塞入真正資料表了。

回應

目前沒有回應.

*標 題:

*姓 名:

 電子郵件: (將不會被顯示)

 個人網頁:

*回應

登入後使用進階評論

Please add 8 and 3 and type the answer here: