2011-11-08 61 views
1

如何重写此SQL语句以执行我所需的操作?SQL从CASE语句返回多个值

SELECT * FROM TABLE 
    WHERE COLUMN_NAME_1 IN (CASE 
     WHEN COLUMN_NAME_2 = 'X' THEN 'A' 
     WHEN COLUMN_NAME_2 = 'Y' THEN 'B', 'C' END) 

显然我不能从CASE子句中返回多个值......所以我该怎么写呢?我敢肯定,我今天慢,因为这似乎很容易....

+0

我不知道你需要什么。 – ObscureRobot

回答

3
SELECT * FROM Table WHERE 
    (COLUMN_NAME_2 = 'X' AND COLUMN_NAME_1 = 'A') OR 
    (COLUMN_NAME_2 = 'Y' AND COLUMN_NAME_1 IN ('B', 'C')) 

SELECT * FROM Table WHERE COLUMN_NAME_2 = 'X' AND COLUMN_NAME_1 = 'A' 
UNION ALL 
SELECT * FROM Table WHERE COLUMN_NAME_2 = 'Y' AND COLUMN_NAME_1 IN ('B', 'C') 

这假设你只在COLUMN_NAME_2 X或Y的结果。如果您需要其他行,则无法分辨您的原始SQL中哪些行。

+0

谢谢..我确实说过它应该很简单:) ... – Ayyoudy