Обновить таблицу с помощью подзапроса - PullRequest
0 голосов
/ 07 декабря 2018

Мне нужно обновить столбец STATUS таблицы

seq Req source  region count STATUS
1   1   C001    ABC     0     NULL
2   1   C001    DEF     0     NULL
3   1   C001    GHI     10    NULL

Исходя из лимита и сравнения приведенной ниже таблицы,

source  description symbol limit
----    ----------- ------ -----
c001    pass         >      10
c002    fail         =      0

Я использую запрос:

update table1 
   set a.STATUS = (select case b.symbol when '>' then case when a.c2 > b.limit then 'PASS' 
            else 'FAIL' end when '<' then case when a.c2 < b.limit 
            then 'PASS' else 'FAIL' end when '=' then case when a.c2 = b.limit then 'PASS' 
            else 'FAIL' end end from table1 a join table2 b on a.source=b.source )

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 07 декабря 2018

Я думаю, что вы хотите коррелированный подзапрос:

update table1  a
   set STATUS = (select (case when b.symbol = '>' and a.c2 > b.limit or
                                   b.symbol = '<' and a.c2 < b.limit or
                                   b.symbol = '=' and a.c2 = b.limit 
                              then 'PASS' else 'FAIL'
                         end)
                 from table2 b 
                 where a.source = b.source
                );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...