【发布时间】:2022-01-21 15:31:37
【问题描述】:
我的查询如下所示:
SELECT col1,col2
FROM dbo.table1
现在我被要求使用 case 子句过滤掉:
if col1 > 5 then display only col2 > 10
and if col1 <= 5 then display only col2 > 20
有没有办法做到这一点?
【问题讨论】:
-
是的,只要你解释你想要什么
then display only col2>10是什么意思?仅当col2大于 10 时才显示行?你不需要CASE -
您可以简单地将您的要求放在
where子句中 - 比如WHERE (col1>5 AND col2>10) OR (col1<=5 AND col2>20 -
您的问题需要表述得更清楚,您通常不会使用 case 表达式 来过滤行,
then display only col2>10是什么意思? -
display only col2 > 10这是什么意思?显示为真?仅当 COL2 > 10 时才显示一列或另一列? T-SQL 没有布尔类型,因此您不能将布尔表达式用作值。如果你想返回可以翻译成 TRUE/FALSE 的东西,你需要明确地返回 1 或 0。 -
This answer 解释了如何在
join条件中使用case表达式。它也适用于where子句。预计表现会从沉闷到糟糕。
标签: sql sql-server tsql