2011-02-14 101 views
1

我有如下记录Oracle查询重复的记录问题

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 

我加入与其他几个表此表以获得typedescription和状态说明表。

我的问题是如何显示每个GroupSeqNo只有一条记录?如果你看一下上面的样品记录有来自GroupSeqNo 16,2 3条记录17和2 18

下面是我使用的查询:

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 FROM STATS SS,DDTYPES T,DDSTATUSES S其中SS.TYPE_ID = T.TYPE_ID AND SS.STATUS_ID = S.STATUS_ID – CarneyCode 2011-02-14 21:41:23

回答

1

加入一个子查询组STATS表使用GROUP BY并根据您的需要选择MIN(seqNo)MAX(seqNo)

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