[SQL ] JOIN的CASE問題

看板Database作者 (Lance)時間11年前 (2014/06/10 17:23), 11年前編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/1
(針對 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

06/10 21:24, , 1F
on A.A1=B.B1 and isnull(A2, A1)=B2
06/10 21:24, 1F

06/10 21:42, , 2F
case要這樣下
06/10 21:42, 2F

06/10 21:42, , 3F
(case when A.Acolumn2 ='' then A.Acolumn1
06/10 21:42, 3F

06/10 21:42, , 4F
else A.Acolumn2 end)=B.Bcolumn2
06/10 21:42, 4F

06/10 21:43, , 5F
on後面上述語法
06/10 21:43, 5F

06/10 21:47, , 6F
isnull(A.Acolumn2 ,A.Acolumn1) 這樣下是沒用的
06/10 21:47, 6F

06/10 21:47, , 7F
值是空白,不是NULL
06/10 21:47, 7F

06/11 08:56, , 8F
待會來改看看 感謝兩位!!
06/11 08:56, 8F
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
文章代碼(AID): #1JbiwiwK (Database)