2012-09-14 81 views
4

我有一個複雜的情況。我想在「where子句」中寫入一個包含「case when」條件的sql查詢。CASE時的「IN」條件何時條款?

就像這樣:

SELECT * 
FROM <table> 
WHERE 
<Column1> in 
    CASE <Column2> 
     WHEN 1 THEN ('OP', 'CL') 
     WHEN 0 THEN ('RE', 'ST') 
END 

列1必須是 「中」,而不是 「=」。因爲Column1的條件有多個值。該查詢返回「不正確的語法附近」,「。」錯誤。

你能給我任何建議嗎? (對不起,我的英文不好)

編輯:我想我誤解了。如果Column2爲1,則條件必須如此:「IN('OP','CL')」else Column1 is 2,condition must like that「IN('RE','ST')」。

回答

6

你並不需要一個CASE表達,你可以使用OR這樣的:

SELECT * 
FROM <table> 
WHERE (Column2 = 1 AND Column1 IN ('OP', 'CL')) OR 
    (Column2 = 0 AND Column1 IN ('RE', 'ST')) 
+0

+1,但修復的聲明,它不與有機磷農​​藥聲明 – Les

+0

我同意我想我誤解了。如果Column2爲1,則條件必須如此:「IN('OP','CL')」else Column1 is 2,condition must like that「IN('RE','ST')」。 – juniorDev

+0

@Les - 是的,我有column1和column2倒退;編輯。 Downvoter,請查看。 – LittleBobbyTables

-1
Select * from table where <Column1> in (Select case <Column2> when 1 then ('OP','CL') when 
0 then ('RE','ST')) 
+0

此代碼不起作用。也許它在SQL Server的早期版本中起作用,但我認爲我正在運行2008。並沒有奏效。 – Malachi