2012-10-29 54 views
2

我试图仅保留ID具有单个销售日期的行,例如。SQL - 根据ID移除具有多个唯一日期的行

ID SALES_DTE
101 10-JAN-12
101 10-JAN-12
101 10-JAN-12
102 10-JAN-12
102 13-JAN-12
103 13-JAN-12

在上面,我想保留ID 101和103,因为他们只有一个销售日期。但我不想要102,因为它有两个销售日期。谁能帮忙?

+0

'SELECT * FROM MYTABLE TB其中不存在(选择从那里nx.id = tb.id和nx.sales_date <> tb.sales_date MYTABLE NX *);'NB如果要**物理删除他们**:用“删除”**替换“select *”**并删除NOT ** – wildplasser

回答

0
delete from your_table 
where id not in 
(
    select id 
    from your_table 
    group by id 
    having count(distinct sales_date) = 1 
) 
+0

这似乎对我来说很有用,谢谢! – user1784264

+0

注意:这也会删除碰巧有'sales_date IS NULL'的元组,这可能是也可能不是OP的意图。 – wildplasser

+0

这可以通过'having'子句改变:'有count(distinct sales_date)<= 1' –

相关问题