Как использовать максимальную дату в запросе SQL - PullRequest
0 голосов
/ 06 ноября 2018

У меня вопрос sql как;

Col1, Col2, Col3, Col4
aaaa, 2018.11.06, 8.0, 400.0
aaaa, 2018.06.06, 12.0, 600.0
aaaa, 2018.02.10, 10.0, 500.0
bbbb, 2017.11.06, 8.0, 100.0
bbbb, 2017.06.06, 12.0, 300.0
bbbb, 2017.02.10, 10.0, 200.0

В утверждении select мне нужно получить только самый большой (самый новый) Col2. Правильный результат должен быть:

aaaa, 2018.11.06, 8.0, 400.0
bbbb, 2017.11.06, 8.0, 100.0

потому что 2018.11.06 и 2017.11.06 - самые большие (самые новые).

Как использовать максимальную дату в запросе SQL для MS SQL или ORACLE?

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

SQL Server:

SELECT TOP 1 * FROM myTable ORDER BY Col2 DESC
0 голосов
/ 06 ноября 2018

Вы можете использовать коррелированный подзапрос

select * from tablename a where col2 in 
   (select max(col2) from tablename b on a.col1=b.col1)
0 голосов
/ 06 ноября 2018

Довольно универсальным решением может быть

select yt.*
from your_table yt
join (
   select col1, max(col2) max_col2
   from your_table
   group by col1
) t on t.col1 = yt.col1 and
       t.max_col2 = yt.col2

это решение вернет все строки с максимальной датой на col1. Другое решение заключается в использовании row_numer (), однако он может иметь неоптимальную производительность .

select *
from
(
  select *,
         row_number() over (partition by col1 order by col2 desc) rn
  from your_table
) t
where t.rn = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...