2016-03-07 59 views
0

我有兩個山坳的SQL:提取不同的值

EmpID Beneifts 
1  A 
1  B 
2  A 
3  A 
3  c 
4  A 

我的預期產出表僅僅是EMPID只有福利一個

EmpID Benefits 
2  A 
4  A 

請幫我查詢。

+2

分享你的研究可以幫助大家。告訴我們你試過了什麼,以及它爲什麼不符合你的需求。這表明你已經花時間去嘗試幫助自己,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案!另見[問]。請記住** SO不是免費的代碼服務** –

回答

0

使用NOT EXISTS返回相同的EmpID的一排沒有任何好處,但 'A':

select * 
from tablename t1 
where t1.Benefits = 'A' 
    and not exists (select 1 from tablename t2 
        where t2.EmpID = t1.EmpID 
        and t2.Benefits <> 'A') 

或者,做一個GROUP BY

select EmpID 
from tablename 
group by EmpID 
having min(Benefits) = 'A' 
    and max(Benefits) = 'A' 
+0

爲什麼最小/最大的第二個? '在哪裏好處='a'有計數(好處)= 1' –

+0

@MarcB,這是不夠的,'B'和任何其他值也會返回 – sagi

+0

@MarcB,也可能有數不同的好處。 – jarlh