Проблемы с SQL, фильтрующие результаты - PullRequest
0 голосов
/ 17 мая 2019

В настоящее время я получаю результаты, которые выглядят так:

Row    | ParentLevel | ChildLevel | 
1      |     1       |     1      |   
2      |     2       |     2      |  
3      |     2       |     3      |  

Я хочу, чтобы строка отображалась только в случае совпадения родительского и дочернего элементов, если нет результата, в котором они не совпадают.

В этом случае строка 1 подходит, потому что это единственный раз, когда появляется родительский уровень 1

Строка 2 Я бы предпочел не появляться, потому что есть строка 3, а родительские и дочерние элементы не совпадают в строке 3.

Возможно ли установить оператор where?

1 Ответ

0 голосов
/ 17 мая 2019

Вы можете использовать not exists:

select t.*
from t
where t.ParentLevel <> t.ChildLevel or
      not exists (select 1
                  from t t2
                  where t2.ParentLevel = t.ParentLevel and t2.ParentLevel <> t2.ChildLevel
                 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...