2017-04-13 37 views
0

我已經構建了一個查詢,它提出了一些非常令人困惑的結果。首先,我有,我已經使用以下格式創建一個臨時表的特定代碼(VARCHAR)的列表:嘗試匹配現有表格和創建的臨時表格之間的值

IF OBJECT_ID('tempdb..#MentalDX') IS NOT NULL 
DROP TABLE #MentalDX 
CREATE TABLE #MentalDX (
MHDX VARCHAR(254)) 

INSERT INTO #MentalDX (MHDX) 
VALUES ('F03.90'),('F03.91')....; 

有此表超過800的值。當我使用以下CASE語句時:

CASE WHEN edg2.REF_BILL_CODE IN (mdx.MHDX) THEN edg2.REF_BILL_CODE 
    ELSE NULL 
    END AS mdx2 

我總是得到一個NULL值。我用=代替了IN,但它沒有區別。我知道,如果我創建一個測試查詢,並使用表中現有的值替換列引用,那麼臨時表工作正常。數據庫顯示REF_BILL_CODE是varchar(254),我確定我的臨時表列也是一樣的。任何想法我可能做錯了什麼?我也可以分享更多的代碼段,但會有一些我無法做到的個人可識別信息。

回答

0

所以,我的問題是我在我的查詢中加入了臨時表。原來下面竟是我是什麼後:

CASE WHEN edg1.REF_BILL_CODE IN (SELECT md.MHDX FROM #MentalDX md) 
    THEN edg1.EXTERNAL_ID 
    END AS mdx1 

這給我回真正的結果,而不是像之前的所有NULL。現在我遇到了一個新問題,但在提出這個問題之前會做更多的研究。

相關問題