SQL Server - выберите различное с самой последней датой плюс другие результаты - PullRequest
0 голосов
/ 26 сентября 2018

Имея регистры выше, как я могу получить код (принимая во внимание, что первые 3 кода совпадают), который имеет самую последнюю дату, и при этом показать другие результаты?

id  |  agency   |  code     |   date
1   |  11111    |  12345    |   2018-09-25 00:01:10.000
2   |  11111    |  12345    |   2018-09-25 00:01:20.000
3   |  11111    |  12345    |   2018-09-25 00:01:30.000
4   |  22222    |  23456    |   2018-09-25 00:02:00.000
7   |  33333    |  54321    |   2018-09-25 00:02:10.000

ЧтоЯ хотел бы иметь:

id  |  agency   |  code     |   date
3   |  11111    |  12345    |   2018-09-25 00:01:30.000
4   |  22222    |  23456    |   2018-09-25 00:02:00.000
7   |  33333    |  54321    |   2018-09-25 00:02:10.000

Заранее спасибо за любую дополнительную помощь!

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Вам нужно разобраться с двумя ситуациями.
(1) Получите максимальную дату каждого агентства из youTable.Это можно сделать с помощью функции агрегирования (max ()) и группировки по агентству.

(2) Выберите все записи из таблицы и внутреннего объединения с результатами из (1).

select t1.id, t1.agency,t1.code,t1.date 
from yourTable t1 
    inner join 
    (
        --only most recent of each agency
        select max(date) date,agency from yourTable group by agency
    ) t2 on t1.[date]=t2.[date] and t1.agency=t2.agency
0 голосов
/ 26 сентября 2018

Используйте значение ROW_NUMBER


Это поможет вам.

Вы можете получить значение ROW_NUMBER для каждой строки по отдельным столбцам.Установите порядок в столбце DATE.

SELECT  *
FROM  (
        SELECT  *,
            ROW_NUMBER() OVER(PARTITION BY AGENCY, CODE ORDER BY date_column) AS ROW_NUMBER
        FROM  table_name
    ) AS ROWS
WHERE ROW_NUMBER = 1

Образец SQL Fiddle

0 голосов
/ 26 сентября 2018

Подумайте «фильтрация».В этом случае с коррелированным подзапросом:

select t.*
from t
where t.date = (select max(t2.date) from t t2 where t2.agency = t.agency);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...