看板 Database 關於我們 聯絡資訊
(針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行) 資料庫名稱:MSSQL 資料庫版本:10.50.2500 內容/問題描述: http://i.imgur.com/ScDmy9z.png 又來問問題了 艸 這次是個JOIN的問題,想將右邊的TABLE B LEFT JOIN給左邊的A 產生下面的結果 但因為A的Acolumn2有空白的,這樣怎麼ON好像都不太對… 以下是測試過的兩個錯誤結果 原本想說看用isnull可不可以讓原本空白的地方先有資料 不過亂弄一下看起來不能這樣 做 ----- select Acolumn1, isnull(A.Acolumn2 ,A.Acolumn1) AS Acolumn2, Acolumn3, Acolumn4, Acolumn5, from A A left join B B on A.Acolumn2 = B.Bcolumn2 order by Acolumn1 ----- 後來看到有人在left join後的條件後面弄case when 但照著弄會在 (A.Acolumn1=B.Bcolumn2)出現錯誤 ----- select Acolumn1, Acolumn2, Acolumn3, Acolumn4, Acolumn5, from A A left join B B on A.Acolumn2 = B.Bcolumn2 and case when A.Acolumn2 = '' then (A.Acolumn1=B.Bcolumn2) order by Acolumn1 ----- 請問有什麼比較好的解法嗎?謝謝/ -- Sent from my HR-93. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.87.137.190 ※ 文章網址: http://www.ptt.cc/bbs/Database/M.1402392236.A.E94.html
konkonchou:on A.A1=B.B1 and isnull(A2, A1)=B2 06/10 21:24
scpisces:case要這樣下 06/10 21:42
scpisces:(case when A.Acolumn2 ='' then A.Acolumn1 06/10 21:42
scpisces: else A.Acolumn2 end)=B.Bcolumn2 06/10 21:42
scpisces:on後面上述語法 06/10 21:43
scpisces:isnull(A.Acolumn2 ,A.Acolumn1) 這樣下是沒用的 06/10 21:47
scpisces:值是空白,不是NULL 06/10 21:47
bulmungtw:待會來改看看 感謝兩位!! 06/11 08:56
select Acolumn1, Acolumn2, Acolumn3, Acolumn4, Acolumn5, from A A left join B B on (case when A.Acolumn2 = '' then A.Acolumn1 else A.Acolumn2 end) =B.Bcolumn2 order by Acolumn1 成功了,謝謝scpisces的指點! ※ 編輯: bulmungtw (219.87.137.190), 06/11/2014 09:46:02