TSQL,删除组中的负值

时间:2013-01-24 17:22:14

标签: tsql

我有一张包含以下数据的表格:

Id  Name    Value
1   John    100
2   John    -500
3   John    500
4   Smith   10
5   Smith   20
6   Smith   -20
7   Stuart  -10
8   Wills   25

我正在寻找一个有效的TSQL查询,可以删除John -500和Smith -20(即如果它们在同一组[名称组]中具有相似的正值,则为负值的记录)。

2 个答案:

答案 0 :(得分:1)

我认为这就是你所需要的。 (SQL DEMO

delete y
from mytable y join (
  select id,name, value
  from mytable x
  where value > 0) z on y.name = z.name and y.value = -1 * z.value 

select * from mytable
--SELECT RESULTS AFTER DELETING
ID  NAME    VALUE
1   John    100
3   John    500
4   Smith   10
5   Smith   20
7   Stuart  -10
8   Wills   25

答案 1 :(得分:0)

delete a
from mytable a 
join mytable b
  on b.name = a.name
 and a.value < 0
 and b.value = -1 * z.value 

与Kaf +1几乎相同