2012-10-24 3 views
2

값 : 얻을DB2의 SQL 그룹은

ID SUBID FLAG 
----------------- 
1  1  1 
1  2 (null) 
2  3  1 
2  3 (null) 
3  4  1 
4  5  1 
4  6 (null) 
5  7  0 
6  8 (null) 
7  9  1 

와 내가 좋아하는 모든 '플래그가'에서만 있도록 1로 설정되어있는 ID의 쿼리가 반환하는이 경우

ID SUBID FLAG 
----------------- 
3  4  1 
7  9  1 

어떻게해야합니까?

답변

2

이 시도 :

SELECT * FROM flags where flag=1 
and ID NOT in(SELECT ID FROM flags where flag !=1 OR flag IS NULL) 
+0

정말 고마워! – user1613270

+0

np, 플래그 열의 유일한 옵션이 1이고 널 (NULL)이지만 플래그가 "2"일 수있는 경우이를 지우면 실제로 플래그! = 1을 제거 할 수 있습니다 – Diego

1

I가 테스트 할 수있는 DB2 인스턴스가 없지만 문제가 해결 될 수 있습니다

select t1.id, t1.subid, t1.flag 
from yourtable t1 
inner join 
(
    select id 
    from yourtable 
    group by id 
    having count(id) = 1 
) t2 
    on t1.id = t2.id 
where t1.flag = 1; 
+0

'FLAG' 또한 영업 이익의에 의해 판단, '0'이 될 수 예. 플래그 1이있는 행과 동일한 ID와 플래그 0이있는 행이 있으면 쿼리가 올바르게 작동하지 않습니다. –

+0

@AndriyM 당신이 정확하고 수정되었습니다 - SQL Server fiddle에서 작동합니다 - http://sqlfiddle.com/ #! 3/8f6e4/7 – Taryn