看板 Database 關於我們 聯絡資訊
SELECT A.*,ISNULL(B1.EMPCNAME,B2.EMPCNAME) AS EMPCNAME FROM A LEFT JOIN B AS B1 ON A.CUSTNO = B1.CUSTNO LEFT JOIN B AS B2 ON A.BLOCNO = B2.BLOCNO WHERE (A.CUSTNO IS NOT NULL AND A.CUSTNO = B2.CUSTNO) OR (A.CUSTNO IS NULL) OR (A.BLOCNO IS NULL) ※ 引述《stickzor (Sam雞)》之銘言: : (針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行) : 資料庫名稱:MSSQL : 資料庫版本:10.50.4000.0 : 內容/問題描述: : 各位前輩好, : 問題如這張圖 : http://imgur.com/MOFfVWB : 想請問下我想把第二張的left join 給第一張, : 第三張是想要的結果。 : 原本有找過類似的文章 : https://www.ptt.cc/bbs/Database/M.1402392236.A.E94.html : 但是有一個條件不太一樣就是我要比對的欄位可能是null, : 如果是null則換成第二欄來on, : (ex 如果A.custno 是 null 則 b2.blocno =A.blocno 不然的話就是 : A.custno = b1.custno ) : 我最後寫出 : SELECT A.*,(ISNULL(b1.empcname,b2.empcname)) as empcname1 : FROM A : left join B as b1 on A.custno = b1.custno : left join B as b2 on b2.blocno =A.blocno : 但是有問題就是會有重複值。 : 所以想問一下, : 能否有更好的寫法 謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.221.80.36 ※ 文章網址: http://www.ptt.cc/bbs/Database/M.1413247579.A.BB6.html ※ 編輯: cutekid (61.221.80.36), 10/14/2014 08:49:06
stickzor: 非常感謝你 10/14 10:50
※ 編輯: cutekid (61.221.80.36), 10/14/2014 11:23:18
stickzor: 謝謝 10/14 15:43