lts*_*sai 2 sql sql-server case where-clause
我只是想知道是否可以在 WHERE 子句中以这种形式添加 CASE 语句...
SELECT *
FROM TABLEA
WHERE date between '2014-02-01' and '2014-02-28' and
CASE
WHEN date>'2014-02-28' THEN (SELECT FROM TABLEC WHERE...)
ELSE (SELECT FROM TABLE B WHERE...)
END
Run Code Online (Sandbox Code Playgroud)
谢谢!
是的,在以下情况下这是可能的:
=或>该case语句返回标量值。具有一列和一个值的行“等同于”标量值。因此,以下内容是允许的:
where col = (CASE WHEN date > '2014-02-28' THEN (SELECT max(col2) FROM TABLEC WHERE...)
ELSE (SELECT min(col3) FROM TABLE B WHERE...)
END)
Run Code Online (Sandbox Code Playgroud)
但是,您可能想做一个条件in语句。避开case:
where date > '2014-02-28' and col in (SELECT max(col2) FROM TABLEC WHERE...) or
date <= '2014-02-28' and col in (SELECT min(col3) FROM TABLE B WHERE...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22832 次 |
| 最近记录: |