将一些字段分组并在oracle中选择其中一些字段

时间:2015-07-27 10:32:14

标签: sql oracle

我有一张如下表格。我通过分组一些字段获得了这个表。

739033  007607000176    23.01.2014 13:10:53 007607000176    ELTN    007607000176    ELTN    43494   24  82860   580360
753281  007607000176    23.01.2014 13:13:38 007607000176    ELTN    007607000176    ELTN    43494   24  82860   580360
738084  007607000390    23.01.2014 13:10:53 007607000390    PRTG    007607000390    BASC    18368   14  70865   191623
752332  007607000390    23.01.2014 13:13:38 007607000390    PRTG    007607000390    BASC    18368   14  70865   191623
738238  007607000574    23.01.2014 13:10:53 007607000574    PRTG    007607000574    PRTG    18368   14  67456   297456
752486  007607000574    23.01.2014 13:13:38 007607000574    PRTG    007607000574    PRTG    18368   14  67456   297456
738508  007607000655    23.01.2014 13:10:53 007607000655    BASC    007607000655    PRTG    805 1   10520   283020
752756  007607000655    23.01.2014 13:13:38 007607000655    BASC    007607000655    PRTG    805 1   10520   283020
432213  007607000670    14.05.2011 00:12:31 007607000670    ELTN    007607000670    ELTN    40506   25  163933  903433
432460  007607000670    15.05.2011 00:12:35 007607000670    ELTN    007607000670    ELTN    40506   25  163933  903433
432660  007607000670    16.05.2011 00:12:37 007607000670    ELTN    007607000670    ELTN    40506   25  163933  903433
738083  007607000670    23.01.2014 13:10:53 007607000670    ELTN    007607000670    ELTN    78370   46  109520  1199020
752331  007607000670    23.01.2014 13:13:38 007607000670    ELTN    007607000670    ELTN    78370   46  109520  1199020
433177  007607000670    18.05.2011 00:12:40 007607000670    ELTN    007607000670    ELTN    41506   26  95183   904683
433428  007607000670    19.05.2011 00:12:42 007607000670    ELTN    007607000670    ELTN    41506   26  95183   904683
433928  007607000670    21.05.2011 00:12:49 007607000670    ELTN    007607000670    ELTN    44324   28  101706  911206
434420  007607000670    23.05.2011 00:12:55 007607000670    ELTN    007607000670    ELTN    44324   28  101706  911206
434156  007607000670    22.05.2011 00:12:50 007607000670    ELTN    007607000670    ELTN    44324   28  101706  911206

我想选择其中一个具有相同身份的人。(第二栏)。我该怎么办?

修改 这就是我想要的:

 739033 007607000176    23.01.2014 13:10:53 007607000176    ELTN    007607000176    ELTN    43494   24  82860   580360
 738084 007607000390    23.01.2014 13:10:53 007607000390    PRTG    007607000390    BASC    18368   14  70865   191623
 738083 007607000670    23.01.2014 13:10:53 007607000670    ELTN    007607000670    ELTN    78370   46  109520  1199020

2 个答案:

答案 0 :(得分:0)

尝试在您的查询计数(1)中包含所有其他列。还添加count1)>在您的查询中1。请看一下样本:

with src as (
  select '1' as id,'s1' as descr from dual
  union all
  select '1','s1' from dual
  union all
  select '2','s2' from dual
)
select id,descr,count(*) from src group by id,descr
having count(*) > 1

答案 1 :(得分:0)

您可以使用row_number()。例如,如果第三列中datetime,那么以下内容将获取最新的行:

select t.*
from (select t.*,
             row_number() over (partition by id order by datetime desc) as seqnum
      from table t
     ) t
where seqnum = 1;