查询以过滤掉否定的行

Hec*_*tor 1 sql sql-server

我需要过滤掉具有否定值的行.即我想删除一列匹配的所有行,并且有两行具有否定值.即来自

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..."
Run Code Online (Sandbox Code Playgroud)

我想要

ID, Val, Details
0,   4,  "Details 0 1..."
2,   9,  "Details 2 1..."
Run Code Online (Sandbox Code Playgroud)

因为行1,5 ...和1,-5,...否定将ID标记为无效.我很难找到一个干净的方法来做到这一点.

jar*_*rlh 5

使用NOT EXISTS验证标识不具有"否定值":

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)
Run Code Online (Sandbox Code Playgroud)