получить список невозвратных / не найденных входов sql - PullRequest
1 голос
/ 30 сентября 2019

Мне нужна помощь с запросом SQL. Я не могу понять это. Пожалуйста, помогите.

Если я введу WHERE NMR IN (1,3,5,7,9)

5, на самом деле не существует в таблице

Я получу этот результат

NMR
1
3
7
9


SELECT NMR FROM NMRLIST
WHERE NMR IN (1,3,5,7,9)

Но янужен результат как:

NMR    Found
1       Yes
3       Yes
5       No
7       Yes
9       Yes

Ответы [ 3 ]

3 голосов
/ 30 сентября 2019

Вы можете использовать VALUES и затем LEFT JOIN для своей таблицы:

SELECT V.NMR,
       CASE WHEN NL.NMR IS NULL THEN 'No' ELSE 'Yes' END AS Found
FROM (VALUES(1),(3),(5),(7),(9))V(NMR)
     LEFT JOIN dbo.NMRLIST NL ON V.NMR = NL.NMR;

Обратите внимание, я предполагаю, что NMR является уникальным значением в таблице dbo.NMRLIST. Если нет, вам нужно использовать агрегацию.

1 голос
/ 30 сентября 2019

Вы можете попробовать ниже -

select a.num, case when b.nmr is null then 'No' else 'Yes' end as found
from
(
   select 1 as num union all select 3 union all select 5 union all select 7 union all select 9
)A left join NMRLIST b on a.num=b.NMR and NMR IN (1,3,5,7,9)
0 голосов
/ 30 сентября 2019

Вы можете использовать следующий запрос-

SELECT V.NMR,
       CASE WHEN NL.NMR IS NULL THEN 'No' ELSE 'Yes' END AS Found
FROM (SELECT DISTINCT NMR FROM NMRLIST)V(NMR)
     LEFT JOIN dbo.NMRLIST NL ON V.NMR = NL.NMR;

Пожалуйста, прокомментируйте, если у вас есть какие-либо сомнения?

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