如何在MSSQL中获得最早的一列并获得最新的另一列

时间:2018-11-06 14:10:38

标签: sql sql-server datetime group-by

当我运行此查询时:

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

我明白了:

enter image description here

但是我想过滤结果如下:

enter image description here

我应该如何修改查询以获取第一个到达日期和最后一个离开日期?我知道我需要做一些分组,但我不知道如何使用它。.提前Thnkas ..

2 个答案:

答案 0 :(得分:4)

假设xArriveDate是日期而不是字符串,则可以尝试以下操作:

LeaveDate

答案 1 :(得分:2)

您需要按日期以外的所有列进行分组,并找到MINMAX。万一您的日期为德语格式,则需要在计算总计之前将其转换:

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