2013-04-17 92 views
0

我想寫的情況下,該語句下面的語句中case語句的解決方案。嘗試更新特定列的一個不同TableB中的值。尋找在SQL Server

後,我做

Update a 
set DISMMR = 

然後試圖去檢查這個下面條件case語句

'H01' Is not NULL 
    and 
('H02','H03','HR04','S07','S08','S09') Is NULL 
Then 'Unknown' 

下面這個值從表名:TableA和列名是Code

,我說Is NULL意味着我想要說的是,這個特殊的價值('H02','H03','HR04','S07','S08','S09')不存在或存在於TableA這個特定的列被設計成NOT NULL

這裏。

當我說該特定值H01TableACode柱---- Is not NULL - 意味着Code柱的該特定值從TableA在列中存在/存在。

我需要做的這一個case語句,因爲一旦我做了檢查這種情況下,我寫其他case語句開始WHEN檢查另一個條件和更新與不同的價值

我使用SQL Server 2008 R2。現在我寫了下面的查詢。它運行在SSMS罰款,但是當我在SSIS包中使用這個存儲過程。我的軟件包因​​錯誤而失敗。

[執行SQL任務]錯誤: 「???執行[DBO] [usp_GetMRF_CHP],」 執行查詢用下面的錯誤失敗:「只有一個表達式可以在選擇列表時,不引入子查詢與EXISTS規定。」可能的故障原因:與查詢問題「的ResultSet」屬性設置不正確,參數設置不正確

CASE WHEN EXISTS(SELECT 1 FROM dbo.TableA WHERE Code = 'H01') 
    AND NOT EXISTS(SELECT 1 FROM dbo.TableA 
       WHERE Code IN ('H02','H03','HR04','S07','S08','S09') 
       ) 
THEN 'Unknown' 
when ---- I have another case here. 

任何幫助將是非常讚賞。在此先感謝

回答

0

如果我理解你糾正你要知道,如果同時與其他代碼沒有記錄存在與代碼=「H01」的記錄存在。該case語句應該是這樣的:

CASE WHEN EXISTS(SELECT 1 FROM dbo.TableA WHERE Code = 'H01') 
     AND NOT EXISTS(SELECT 1 FROM dbo.TableA 
        WHERE Code IN ('H02','H03','HR04','S07','S08','S09') 
        ) 
    THEN 'Unknown' 
END