[英]CASE Join in SQL Server
我必須在SQL中進行請求。 我有這些桌子
我想執行此請求,但該請求從未向我發送結果:
Select CDR.*,
p1.*
From dbo.T_CDR_APPEL CDR
Inner Join dbo.POS As p1 On Case
When CDR.CDR_LOC_CODE Like 'CH%' And CDR.CDR_TYPE Like 'I%' And
CDR.CDR_LOC_CODE = p1.Loc_Code Then 1
When CDR.CDR_LOC_CODE Like 'CCN%' And CDR.CDR_TYPE Like 'I' And
CDR.CDR_LAST_REDIR_NO = p1.Post_type Then 1 Else 0 End = 1
我也試過
Select CDR.*,
p1.*
From dbo.T_CDR_APPEL CDR
Inner Join dbo.POS As p1 On CDR.CDR_LOC_CODE = p1.Loc_Code
Where CDR.CDR_LOC_CODE Like 'CH%' And CDR.CDR_TYPE Like 'I%'
Union All
Select CDR.*,
p1.*
From dbo.T_CDR_APPEL CDR
Inner Join dbo.POS As p1 On CDR.CDR_LAST_REDIR_NO = p1.Post_type
Where CDR.CDR_LOC_CODE Like 'CCN%' And CDR.CDR_TYPE Like 'I'
但是同樣的結果,該請求似乎正在工作,但沒有成功。
謝謝你的幫助 !
更新:現在可以與Union一起使用!! 謝謝您的幫助!
跳過case
表達式,改用AND
/ OR
:
select CDR.*,
p1.*
from dbo.T_CDR_APPEL CDR
inner join dbo.POS As p1
on (CDR.CDR_LOC_CODE Like 'CH%' and CDR.CDR_TYPE Like 'I%' And
CDR.CDR_LOC_CODE = p1.Loc_Code)
or (CDR.CDR_LOC_CODE Like 'CCN%' and CDR.CDR_TYPE Like 'I' And
CDR.CDR_LAST_REDIR_NO = p1.Post_type)
一般來說,最好使用AND
/ OR
代替case
在表達ON
和WHERE
子句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.