СОЕДИНЕНИЕ 2 ЗАПРОСОВ - PullRequest
       24

СОЕДИНЕНИЕ 2 ЗАПРОСОВ

0 голосов
/ 28 февраля 2020

У меня есть запрос, который дает мне результаты на основе моего условия where (varchar, например, 20200227Ab c).

Я выполняю объединение этих запросов с тем же запросом, но меняю условие Where на (20200126xyz ).

Я хочу, если данные присутствуют для обоих случаев, когда только условия, а затем дать мне результат первого запроса, где (20200227ab c).

Пожалуйста, сообщите.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Я думаю, что вы хотите not exists:

select t.*
from t
where t.val = '20200227Abc' or
      (t.val = '20200126xyz' and
       not exists (select 1 from t where t.val = '20200227Abc')
      );
0 голосов
/ 28 февраля 2020

Если я правильно понимаю ваш вопрос, вы рассчитываете получить результаты для условия 1 только тогда, когда оно также удовлетворяет условию 2. Вы можете использовать существует в этом случае. Используя образец:

;with cte as
(select 1 as id,'20200227Abc' as val union
select 1 as id,'20200126xyz' as val union
select 2 as id,'20200227Abc' as val)

select * 
from cte a
where val='20200227Abc' and 
    exists (select 1 from cte b where b.val='20200126xyz' and a.id=b.id)

Это должно дать вам желаемый результат.

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