2011-02-14 3 views
1

J'ai une table avec les enregistrements suivantsrequête Oracle enregistrements distincts d'émission

seqNo desc typeID statusID GroupSeqNo 
1  test 20  30   16 
2  test1 21  42   16 
3  test2 20  43   17 
4  test3 20  30   17 
5  test4 21  42   18 
6  test5 20  43   18 

Je rejoins cette table avec deux autres tables pour obtenir le typedescription et statusDescription.

Ma question est comment puis-je afficher un seul enregistrement de chaque GroupSeqNo? Si vous regardez les enregistrements ci-dessus de l'échantillon, il y a 3 enregistrements de GroupSeqNo 16, 2 pour 17 et 2 pour 18.

Voici la requête que je utilise:

SELECT DISTINCT SS.GROUPSEQNO,SS.SEQNO,SS.DESC,T.DESC,S.DESC 
FROM STATS SS, DDTYPES T, DDSTATUSES S 
WHERE SS.TYPE_ID=T.TYPE_ID AND SS.STATUS_ID=S.STATUS_ID 
+0

SELECT DISTINCT SS.GROUPSEQNO, SS.DESC, T.DESC, S.DESC DE STATS SS, DDTYPES T, DDSTATUSES S OU SS.TYPE_ID = T.TYPE_ID ET SS.STATUS_ID = S.STATUS_ID – CarneyCode

Répondre

1

Rejoindre une sous requête qui regroupe les STATS table en utilisant GROUP BY et sélectionne le MIN(seqNo) ou MAX(seqNo) selon ce que vous voulez.

SELECT SS.GROUPSEQNO, SS.SEQNO, SS.DESC, T.DESC, S.DESC 
FROM STATS SS 
    INNER JOIN DDTYPES T ON SS.TYPE_ID = T.TYPE_ID 
    INNER JOIN DDSTATUSES S SS.STATUS_ID = S.STATUS_ID 
    INNER JOIN (
    SELECT MIN(seqNo) MinID 
    FROM STATS 
    GROUP BY GroupSeqNo 
) g ON SS.seqNo = g.MinID 
Questions connexes