发生“CASE ELSE”时从SQL中删除行
这是我的sql查询:发生“CASE ELSE”时从SQL中删除行,sql,sql-server-2008,Sql,Sql Server 2008,这是我的sql查询: select case when table.field1 = 1 then 1 when table.field2 = 3 then 3 when table.field2 = 4 then 4 when table.field3 = 1 then 5 else .... Status //item name from table 我希望在发生else时->该行将从数据集中删
select case when table.field1 = 1 then 1
when table.field2 = 3 then 3
when table.field2 = 4 then 4
when table.field3 = 1 then 5
else .... Status //item name
from table
我希望在发生else时->该行将从数据集中删除。
由于某种原因,我不能在where子句中使用Status
想法?最直接的方法是从何时开始为字段设置条件,即3,4中的字段1=1或字段2或字段3=1您可以使用一个通用的表表达式:
with TempResult (id, status)
as
(
select primary_key_column,
case when table.field1 = 1 then 1
when table.field2 = 3 then 3
when table.field2 = 4 then 4
when table.field3 = 1 then 5
else 0
from table
)
select id
from TempResult
where status > 0
试想一下,这个箱子里有20个箱子。它们比这里显示的要长。我同意,这可能会变得难看,但您的请求意味着您确实希望where子句中包含所有这些条件。不能在查询的where部分使用case生成的字段。整个方法是否可能是错误的?你能提供更多关于你想做什么的细节吗?