发生“CASE ELSE”时从SQL中删除行

时间:2010-08-31 05:46:46

标签: 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

如果发生“其他”,我希望如此 - >该行将从dataSet中删除。 由于某种原因,我不能在where子句中使用“Status”。

想法?

2 个答案:

答案 0 :(得分:4)

您可以使用公用表表达式:

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

答案 1 :(得分:0)

最直接的方法是从“when”,即I.e.设置字段的条件。 field1 = 1或(3,4)中的field2或field 3 = 1