Я не нахожу запрос sql - PullRequest
       23

Я не нахожу запрос sql

0 голосов
/ 15 апреля 2010

Вот моя проблема. У меня есть список следующих мер:

src1   dst2   24th december 2009
src1   dst3   22th december 2009
src1   dst2   18th december 2009

Я хотел бы иметь только самые последние меры с запросом sql -> 2 первых строки в моем случае, потому что пары (src и dst) не совпадают.

Я пытаюсь использовать DISTINCT, но у меня есть только 2 первых столбца, и я буду использовать все столбцы. Я тоже пробовал GROUP BY, но у меня ничего не получилось.

Кто-нибудь может мне помочь?

Thx

Narglix

Ответы [ 3 ]

0 голосов
/ 15 апреля 2010

или вы можете использовать различные

select distinct on (src,dst) 
       src,dst,date
  from mytable
 order by src,dst,date desc;
0 голосов
/ 22 апреля 2010

В 8.4 вы также можете сделать:

select src, dst, date
from (select row_number() over(partition by src, dst order by date desc) as row,
             src, dst, date
      from t) x
where x.row = 1

При этом используется только одно сканирование таблицы, а также обобщение, позволяющее принять 5 последних мер и т. Д.

0 голосов
/ 15 апреля 2010
select src, dst, max(date) as Date
from MyTable
group by src, dst

Обновление:

select *
from MyTable t
inner join (
    select src, dst, max(date) as Date 
    from MyTable 
    group by src, dst 
) tm on t.src = tm.src and t.dst = tm.dst and t.Date = tm.Date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...