close

剛在網路上看到有人在發問一個有關Excel匯入DB時資料處理問題

小弟不才只想到這個笨方法跟大家分享

問題

要匯入的Excel資料如下

ColumnA  ColumnB  ColumnC
AAA         12           A
               20           C
               15           B
BBB         22           C
               21           D
CCC         16           B
               20           C

希望轉換為

ColumnA  ColumnB  ColumnC
AAA         12           A
AAA         20           C
AAA         15           B
BBB         22           C
BBB         21           D
CCC         16           B
CCC         20           C

這種情形很常在Excel中看到,相同資料底下空白

從資料庫匯出成這個問題不大,但反過來卻比較少遇到

方法

先將資料匯入資料庫,空白處看是要設定為null或空白都可以,並照上面的順序給予一個流水編號

(再匯入前直接在該欄位建一個自動產生流水號的欄位即可)

然後輸入以下的SQL Code

SELECT CASE
   WHEN t.ColumnA ='' THEN
   (
       SELECT top 1 ColumnA
       FROM [TEST_DB].[dbo].[person]
       WHERE id<t.id and ColumnA!=''
       ORDER BY id DESC
   ) ELSE t.ColumnA END ColumnA,
   p.ColumnB,p.ColumnC
FROM TableA t

說明

透過子查詢方式去抓比該筆資料id小的資料裡最後一筆ColumnA值不為空白即可

(如果是null請自行修改範例SQL)

 

如果有人有比較聰明的方法可分享出來討論,謝謝

 

arrow
arrow
    全站熱搜

    Louis 發表在 痞客邦 留言(0) 人氣()