2016-07-11 76 views
0

即時使用CASE WHEN在更新之前讀取數據(稍後,一旦我的選擇CASE WHEN功能完全正常) 但是,我沒有得到正確的結果。CASE當得到錯誤的結果

SELECT CASE WHEN INCIDENT_RK = 52080 
     THEN NULL 
     ELSE CASE_RK 
     END AS CASE_RK 

FROM [casemgmt4].[ecmdb4].[INCIDENT_LIVE] 

Just one record with the same SELECT statement

然而,它使120個多行,以NULL More than 120 records with the same SELECT statement

誰能告訴我,如果我在代碼中有錯誤嗎?

+1

語法應爲 SELECT CASE INCIDENT_RK WHEN 52080 THEN NULL ELSE CASE_RK END AS CASE_RK – an33sh

+0

如果我用你的代碼中, '=' 將有紅色下劃線,它說「不正確的語法附近「= '「 –

+3

@ an33sh - 呃?在大多數方言中,有兩種「CASE」變體 - 其中每個「WHEN」是一個獨特的布爾表達式(如同在OP中),在'CASE'和第一個'WHEN'之間沒有表達式, WHEN'是一個值表達式,與'CASE'後計算的單個表達式進行比較。你的修正似乎混合了兩種形式。你確定它是正確的嗎? –

回答

2

如果確實只有一條記錄有INCIDENT_RK = 52080那麼其他119條記錄應該是CASE_RK就是NULL。檢查你自己。

SELECT CASE WHEN (INCIDENT_RK = 52080) THEN NULL 
      ELSE CASE_RK 
     END AS CASE_RK_NEW 
    , CASE_RK as CASE_RK_OLD 
FROM [casemgmt4].[ecmdb4].[INCIDENT_LIVE]