2015-01-30 9 views
-2

상황이 'A'인 대부분의 ID의 레코드 만 선택하고 싶습니다.마지막 레코드 선택

레코드에 상황 ID가 더 많은 경우 = 'C'는 아무 것도 반환 할 수 없습니다.

어떻게 하시겠습니까?

enter image description here

+0

이것은 분명하지 않습니다. 상황이 어떻게 A와 C가 될 수 있습니까? –

+4

원하는 출력으로 샘플 데이터를 추가하는 방법 –

+0

MA4IDODE는 ID (PK)입니다. MA4IDOCO는 FK입니다. MA4IDSIT는 상황입니다. – nori

답변

0

select * from tabela a where 
a.id not in (select max(b.id) from tabela b where b.fk=a.fk and b.situacao='A') 
이 같은 아마 뭔가. 내부 쿼리는 단지 C 인 모든 ma4idoco를 가져오고 모든 쿼리를 먼저 제외합니다. 내가 정확하게 질문을 이해한다면 동일한 ma4idoco와 ma4idsit = 'A'를 가진 여러 행이있을 수 있지만 최대 ma4idode를 원한다.

SELECT MAX(a.ma4idode), 
    a.ma4idoco, 
    a.ma4idsit 
FROM tablea a 
WHERE a.ma4idoco NOT IN (SELECT b.ma4idoco FROM tablea b WHERE b.ma4idsit = 'C') 
    AND a.ma4idsit = 'A' 
GROUP BY a.ma4idoco, a.ma4idsit 
관련 문제