2016-12-13 3 views
1

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

ID, Val, Details 
0, 4, "Details 0 1..." 
1, 5, "Details 1 1..." 
1, 7, "Details 1 2..." 
1, -5, "Details 1 3..." 
2, 9, "Details 2 1..." 

Я хотел бы

ID, Val, Details 
0, 4, "Details 0 1..." 
2, 9, "Details 2 1..." 

, потому что ряды 1,5 ... и 1, -5, ... отрицать, который отмечает, что ID недействительными. Я изо всех сил пытаюсь найти чистый способ сделать это.

+1

Почему 1,7 не входит в ожидаемом результате – TheGameiswar

+0

Потому что если есть значение отрицания для ID всех значений с, что Идентификатор должен игнорироваться. – Hector

ответ

5

Используйте NOT EXISTS, чтобы убедиться, что ID не имеет «отрицая значения»:

select * 
from tablename t 
where not exists (select 1 from tablename t1 
        join tablename t2 
         on t1.ID = t2.ID and t1.Val = -t2.Val 
        where t1.ID = t.ID) 
+0

Спасибо - довольно уверен, что это сработает. Просто тестируя, я буду отмечать как принятый. – Hector