Я понимаю, что это вопрос, который задавался ранее, но после изучения этих постов, ни один из них не соответствует точно тому, над чем я работаю.
У меня есть список людей, которые посетили какое-то место,многие из которых посетили несколько раз.У каждого человека есть уникальный идентификатор, и у каждого посещения есть дата и статус (я смотрю только на посещения со статусом «без изменений», а не «отменен», «перенесен» и т. Д.).Что мне нужно сделать, это выбрать только самую старую запись для каждого человека.Другими словами, смотрите только дату их первого посещения.
Я уже решил такую проблему, как раньше, и я вернулся, нашел свой старый код и попытался применить его к этой конкретной ситуации.Проблема в том, что в то время я пытался получить самую последнюю запись для данного человека, и я не уверен, как изменить то, что у меня здесь, чтобы применить к самой старой запись.Если у одного человека было 3 посещения, а у другого 7, я не знаю, что делать с моей переменной seqnum
.
Кроме того, если я запускаю этот код ниже, чем он есть в настоящее время, я 'Я все еще получаю несколько записей для каждого человека, что является еще одной проблемой.По крайней мере, фильтр для неизмененных посещений работает.
Есть мысли?
SELECT DISTINCT
PersonID,
PersonName,
VisitDate,
Status,
VisitType
FROM (SELECT VisitInfo.*,
ROW_NUMBER() OVER (PARTITION BY PersonID, VisitDate ORDER BY VisitDate DESC) as seqnum
FROM VisitInfo
WHERE Status = 'Unchanged'
) VisitInfo
WHERE seqnum = 1
ORDER BY VisitDate