2016-03-07 55 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