Проверка парных строк с использованием запроса SQL Server - PullRequest
0 голосов
/ 10 октября 2018

Пример базы данных:

workerid    codes   empl_rcd
123 USA 0
123 NY  0
123 SF  0
123 USA 1
123 NY  1
567 USA 1
567 CA  1
567 CA  2
567 NY  1
890 USA 0
890 NY  0
890 USA 2
890 NY  1

требование: для каждого работника, если присутствует США, проверьте соответствующий NY или нет

например, для работника 123, если USA 0 присутствует, затем проверьте NY0 присутствует или нет, если присутствует США 1, тогда проверьте, присутствует ли NY 1 или не похож на других работников.

Результирующее значение должно быть:

123 USA 0
123 NY  0
123 USA 1
123 NY  1
567 USA 1
567 NY  1
890 USA 0
890 NY  0

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Решение 2:

with perimeter as (
select f1.*, case when f1.codes='USA' then 'NY' else 'USA' end CodesSearch
from yourtable f1
where f1.codes in ('USA', 'NY') 
)
select f1.* from perimeter f1
and exists
(
   select * from perimeter f2
   where f1.CodesSearch=f2.codes and f1.workerid=f2.workerid and f1.empl_rcd=f2.empl_rcd
)
0 голосов
/ 11 октября 2018

попробуйте это:

select * from yourtable f1
where f1.codes in ('USA', 'NY') 
and exists
(
   select * from yourtable f2
   where (f1.codes='USA' and f2.codes='NY'   or f1.codes='NY' and f2.codes='USA')
   and f1.workerid=f2.workerid and f1.empl_rcd=f2.empl_rcd
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...