[SQL ] 如何整合同表格中相同類型卻在不同欄位的資料
資料庫名稱: SQL Server
資料庫版本: 2008
內容/問題描述:
有一張叫CarTable的資料表,裡面紀錄了客戶名稱及客戶的車牌資料。
現在我想取得所有車牌號碼,但是CarTable卻長這樣:
SELECT *
FROM CarTable
ID | Owner | Number_1 | Number_2
---------------------------------
1 | John | AB-1234 | NULL
---------------------------------
2 | Tim | CD-5678 | EF-9012
---------------------------------
3 | Eric | GH-3456 | NULL
---------------------------------
4 | Fred | IJ-7890 | KL-1234
欄位Owner為客戶名稱,Number_1、Number_2則為客戶的車輛號碼。
為了取得所有車牌號碼,我只好分別SELECT Number_1和Number_2兩個欄位,
然後再用UNION的方式把它連結起來,結果如下:
SELECT Owner, Number_1 AS Number
FROM CarTable
UNION ALL
SELECT Owner, Number_2 AS Number
FROM CarTable
WHERE Number_2 IS NOT NULL
Owner | Number
---------------
John | AB-1234
---------------
Tim | CD-5678
---------------
Tim | EF-9012
---------------
Eric | GH-3456
---------------
Fred | IJ-7890
---------------
Fred | KL-1234
這正是我要的資料,但是現實並非只有Number_1和Number_2兩個欄位而已……
請問各位前輩,在不改變資料表的結構下是否還有其他做法可以解決這個問題?
感謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.173.17.69
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1495896288.A.533.html
推
05/28 00:24, , 1F
05/28 00:24, 1F
→
05/28 00:57, , 2F
05/28 00:57, 2F
→
05/28 00:57, , 3F
05/28 00:57, 3F
→
05/28 01:36, , 4F
05/28 01:36, 4F
這樣我怕會有不同步的問題。而且實際的狀況很糟,因為這樣的資料表共有三個。
除了UNION自身欄位外,還得UNION其他外部表格才算是取得所有紀錄在案的車牌資料。
所以我總共得SELECT 15次資料表再將這些結果UNION起來,
但這種做法理所當然的耗費了許多時間成本在裏頭。
雖然我的想法是重新規劃這些資料表,但上級礙於有不少檢視表參照了這三張資料表,
於是拒絕了這項建議,讓我再想想辦法。
目前我先開了一張檢視表來解決煩人的SELECT和UNION問題,
但查詢時間過長的問題仍有待解決。
※ 編輯: f9968106 (218.173.17.69), 05/28/2017 08:18:10
→
05/28 09:52, , 5F
05/28 09:52, 5F
→
05/28 09:52, , 6F
05/28 09:52, 6F
→
05/28 09:52, , 7F
05/28 09:52, 7F
K大您好,這個檢視表會一直存在,不會DROP掉。
但由於每次查詢的時候,都需要2至3秒的時間才能得到結果。
再加上寫了一大串了SELECT、UNION實在不太美觀,
所以想請教各位前輩們是否有更優雅的做法。
※ 編輯: f9968106 (218.173.17.69), 05/28/2017 10:56:39
→
05/28 17:36, , 8F
05/28 17:36, 8F
推
05/29 01:40, , 9F
05/29 01:40, 9F
→
05/29 01:41, , 10F
05/29 01:41, 10F
lbeeon謝謝,我終於可以不用同一張資料表重複SELECT和UNION了,謝謝。
※ 編輯: f9968106 (218.166.144.30), 05/29/2017 11:30:49
推
05/29 17:14, , 11F
05/29 17:14, 11F
→
05/29 19:23, , 12F
05/29 19:23, 12F
→
05/29 19:25, , 13F
05/29 19:25, 13F
推
05/29 22:18, , 14F
05/29 22:18, 14F
推
05/30 17:40, , 15F
05/30 17:40, 15F
Database 近期熱門文章
PTT數位生活區 即時熱門文章