Sql - как сохранить столбец, не затронутый группой - PullRequest
0 голосов
/ 23 января 2019

У меня есть таблица

DocumentNames   Path    LastUploadedDate
DOCUMENT 1      PATH1   1/2/2018
DOCUMENT 2      PATH2   1/2/2018
DOCUMENT 1      PATH3   1/4/2018

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

Если я сделаю то же, что и ниже,я получаю 2 строки, связанные с документом1

SELECT DocumentNames, Path, max(LastUploadedDate)
FROM table1
Group by DocumentNames, Path

Есть идеи?

Заранее спасибо и всего наилучшего Седрик

Ответы [ 4 ]

0 голосов
/ 23 января 2019
SELECT DocumentNames, Path, LastUploadedDate
  FROM Table1 A
 WHERE LastUploadedDate = (SELECT MAX(LastUploadedDate)
                             FROM Table1 B
                            WHERE A.DocumentNames = B.DocumentNames)

Вы можете использовать подзапрос, чтобы вернуть наибольшую дату в документе. Надеюсь, это поможет.

0 голосов
/ 23 января 2019

вы можете использовать внутреннее объединение на максимальную дату

select m.* from my_table m 
inner join (
  select  DocumentNames, max(LastUploadedDate) max_date
  from my_table  
  group by DocumentNames 
) t on t.max_date = m.LastUploadedDate and t.DocumentNames = m.DocumentNames
0 голосов
/ 23 января 2019

Другая IN версия, где подзапрос возвращает все DocumentNames вместе с их максимальным LastUploadedDate.

select * from tablename
where (DocumentNames, LastUploadedDate) IN
    (select DocumentNames, max(LastUploadedDate)
     from tablename
     group by DocumentNames)
0 голосов
/ 23 января 2019

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

   select t1.* from table_name t1 where
    t1.LastUploadedDate=(select max(LastUploadedDate)
    from table_name t2 where t1.DocumentNames=t2.DocumentNames
                         )

Или вы можете использовать оконную функцию row_number, которая поддерживает большинство dbms

select * from 

(select *,row_number() over(partition by DocumentNames order by LastUploadedDate desc) rn from table_name
) t where t.rn=1
...