剛在網路上看到有人在發問一個有關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)
如果有人有比較聰明的方法可分享出來討論,謝謝
留言列表