Oracle查询不同的记录问题

时间:2011-02-14 21:36:47

标签: oracle10g

我有一张包含以下记录的表

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和Statusdescription。

我的问题是如何只显示每个GroupSeqNo中的一条记录?如果你查看上面的样本记录,GroupSeqNo 16有3条记录,17条记录有2条,18条记录有2条。

以下是我正在使用的查询:

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

1 个答案:

答案 0 :(得分:1)

加入一个子查询,使用STATSGROUP 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