Удалите строки из SQL, когда произойдет «CASE ELSE» - PullRequest
1 голос
/ 31 августа 2010

Это мой 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» -> строка была удалена из набора данных.По какой-то причине я не могу использовать "Status" в предложении where.

Идеи?

Ответы [ 2 ]

4 голосов
/ 31 августа 2010

Вы можете использовать общее табличное выражение:

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
0 голосов
/ 31 августа 2010

Самый простой способ - установить условия для полей из «когда», т.е. field1 = 1 или field2 в (3,4) или field3 = 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...