SQL从CASE语句返回多个值

时间:2011-11-08 19:41:18

标签: sql sql-server

如何重写此SQL语句以执行我需要的操作?

 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子句中返回多个值...那么我怎么能写这个呢?我很确定今天我很慢,因为这看起来很容易......

1 个答案:

答案 0 :(得分: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中的哪些行。