Найти самые ранние и самые поздние даты указанных записей из таблицы, используя SQL - PullRequest
4 голосов
/ 25 марта 2010

У меня есть таблица (в MS SQL 2005) с выбором дат. Я хочу иметь возможность применять оператор WHERE, чтобы вернуть группу из них, а затем вернуть, какая дата является самой ранней из одного столбца, а какая - самой последней из другого столбца. Вот пример таблицы:

ID StartDate  EndDate    Person
1  01/03/2010 03/03/2010 Paul
2  12/05/2010 22/05/2010 Steve
3  04/03/2101 08/03/2010 Paul

Так что я хочу вернуть все записи, где Person = 'Paul'. Но вернуть что-то вроде (самое раннее) StartDate = 01/03/2010 (из идентификатора записи 1) и (самое позднее) EndDate = 08/03/2010 (из идентификатора записи 3).

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

Ответы [ 2 ]

9 голосов
/ 25 марта 2010

Вам нужны агрегатные функции min и max, например, очень простой случай:

select min(StartDate), max(EndDate)
from data
where Person = 'Paul'

У вас есть все обычные возможности SQL, так что выбор из подзапроса доступен.

2 голосов
/ 25 марта 2010

Было бы также неплохо использовать group by. Так что если вам нравятся все люди в вашем результате, и вы пропустите предложение where, вы не получите ошибочные данные:

select person, min(StartDate), max(EndDate)
from data
group by person

или

select person, min(StartDate), max(EndDate)
from data
where person ='Paul'
group by person

или

select person, min(StartDate), max(EndDate)
from data
group by person
having person ='Paul'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...