ВЫБЕРИТЕ неповторяющиеся записи, объединенные в таблицу с повторяющимися записями по дате, по последней дате - PullRequest
2 голосов
/ 20 июля 2009

Название, вероятно, не имеет особого смысла, поэтому я постараюсь описать его здесь в теме.

Рассмотрим 2 таблицы в MSSQL2005:

Таблица дел:

id int,
caseNo string

Таблица событий:

id int,
caseID int,
eventDate date/time

Мне нужен оператор выбора для представления, которое будет возвращать отдельных строк: case.caseNo, events.eventDate (только часть даты)

Они связаны / соединены events.caseID = cases.id много к одному. Существует несколько записей о событиях для каждого случая. Я хочу, чтобы набор результатов был единичным caseNo с самым последним / самым последним значением events.eventDate.

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 20 июля 2009

Есть 5 способов сделать это, они описаны здесь: Включая связанные значения агрегированного столбца

По сути, что-то вроде этого, если вам нужно больше, чем просто дата и идентификатор дела

select e.*,c.*
from(
select caseID,max(evendate) as MaxEventDate
from Events
group by caseID) x
join Cases c on c.Id = x.caseID
join Events e on e.eventDate =  x.MaxEventDate
and e.caseID = x.caseID

в противном случае просто сгруппировать по идентификатору и использовать максимум для даты

select  max(e.EventDate) as MaxEventDate,
    c.CaseNo
from
    Cases c
    join Events e on
        e.caseid = c.id 
group by c.caseNo
3 голосов
/ 20 июля 2009

Вы можете просто использовать функцию max, чтобы получить самую последнюю дату, например:

select
    c.caseNo,
    max(e.eventDate) as eventDate
from
    cases c
    inner join events e on
        c.id = e.caseid
group by
    c.caseNo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...