SQL для получения данных из строки с наибольшим значением версии - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть таблица с такими данными:

Id     | Version | isLive
-------+---------+-------
comp1  |   2     | true     
comp1  |   3     | true     
comp1  |   4     | false    
comp1  |   1     | true      
comp2  |   4     | true      
comp2  |   1     | false

Я хочу получить строку с наибольшим номером версии для каждого идентификатора.Таким образом, для каждого идентификатора должна быть только одна строка.

select id 
from mytable 
group by id

Возвращает данные случайным образом.

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

Это то, что вы хотите?

         select id,max(distinct version) from 
         mytable 
        group by id order by id
0 голосов
/ 27 февраля 2019

Как насчет этого:

SQL> with test (id, version, islive) as
  2    (select 'comp1', 2, 'true'  from dual union all
  3     select 'comp1', 3, 'true'  from dual union all
  4     select 'comp1', 4, 'false' from dual union all
  5     select 'comp1', 1, 'true'  from dual union all
  6     select 'comp2', 4, 'true'  from dual union all
  7     select 'comp2', 1, 'false' from dual
  8    )
  9  select id, version, islive
 10  from (select id, version, islive,
 11          row_number() over (partition by id order by version desc) rn
 12        from test
 13       )
 14  where rn = 1;

ID       VERSION ISLIV
----- ---------- -----
comp1          4 false
comp2          4 true

SQL>
0 голосов
/ 27 февраля 2019

С здесь

SELECT * FROM (SELECT * FROM MyTbl ORDER BY version ) WHERE rownum = 1;
...