2016-02-12 53 views
1

我有以下表:選擇基團,其中的所有元素滿足條件

trade_id position_id exit_date 
34   1 
35   1    2016-01-02 
36   2    2016-02-07 
37   2    2016-02-06 
38   3   
39   3 

我需要組由position_id,並只選擇位置,其中該組中的每一個trade_id具有填充在exit_date換句話說,每個position_id組中的每個trade_id必須有exit_date才能被選中。

在上述表中,僅存在一個合格的基團,即:position_id = 2

我曾嘗試以下:

select position_id from trades 
where exit_date is not null 
group by position_id 

但其選擇的位置,即使僅交易中的一個具有一個exit_date填補我只需要擁有所有exit_dates已經被填入

回答

2

而不是使用WHERE的位置,你應該使用HAVING一個COUNT,像這樣:

SELECT position_id 
FROM trades 
GROUP BY position_id 
HAVING COUNT(*)=COUNT(exit_date) 

COUNT(*)計數所有的行,而與在exit_date列非NULLCOUNT(exit_date)計數行。因此,HAVING只保留position_id=2,這兩個計數都相等。

相關問題