SQL从CASE语句返回多个值
如何重写此SQL语句以执行所需操作SQL从CASE语句返回多个值,sql,sql-server,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子句返回多个值。。。那我还能怎么写呢?我很确定我今天很慢,因为这看起来很容易 SELECT * FROM Table WHERE
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子句返回多个值。。。那我还能怎么写呢?我很确定我今天很慢,因为这看起来很容易
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'))
或
这假定您只希望在列_NAME_2中包含X或Y的结果。如果需要其他行,则无法区分原始SQL中的哪些行
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')