簡體   English   中英

CASE加入SQL Server

[英]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在表達ONWHERE子句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM