Re: [SQL ] JOIN的CASE WHEN 問題

作者: cutekid (可愛小孩子)   2014-10-14 08:46:16
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
: 但是有問題就是會有重複值。
: 所以想問一下,
: 能否有更好的寫法 謝謝。
作者: stickzor (Sam雞)   2014-10-14 10:50:00
非常感謝你謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com