Как получить самый ранний из одного столбца и получить самый последний из другого столбца в MSSQL - PullRequest
0 голосов
/ 06 ноября 2018

Когда я запускаю этот запрос:

select * from customertravel where PersonID in (1,2,7)

Я получаю это:

enter image description here

Но я хочу отфильтровать результаты так:

enter image description here

Как мне изменить этот запрос, чтобы получить дату первого и последнего отпуска? Я знаю, что мне нужно создать какую-то группу, но я не мог понять, как ее использовать .. Спасибо заранее ..

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Вам нужно сгруппировать по всем столбцам, кроме дат, и найти MIN и MAX. На случай, если ваши даты в немецком формате, вам нужно конвертировать их перед вычислением совокупности:

SELECT
    PersonID,
    Name,
    City,
    MIN(CONVERT(DATE, ArriveDate, 104)) AS FirstArriveDate,
    MAX(CONVERT(DATE, LeaveDate, 104)) AS LastLeaveDate
FROM customertravel
WHERE PersonID IN (1, 2, 7)
GROUP BY PersonID, Name, City
0 голосов
/ 06 ноября 2018

Предположим, что ArriveDate и LeaveDate являются датами, а не строками или около того, вы можете попробовать следующее:

SELECT   PersonID,
         Name,
         City,
         MIN(ArriveDate),
         MAX(LeaveDate)
FROM     customertravel
WHERE    PersonID IN (1, 2, 7)
GROUP BY PersonID,
         Name,
         City;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...