【发布时间】:2018-11-06 14:10:38
【问题描述】:
当我运行这个查询时:
select * from customertravel where PersonID in (1,2,7)
我明白了:
但我想过滤结果是这样的:
我应该如何修改该查询以获取第一次到达日期和最后一次离开日期?我知道我需要做一些分组,但我不知道如何使用它..提前谢谢..
【问题讨论】:
标签: sql sql-server datetime group-by
当我运行这个查询时:
select * from customertravel where PersonID in (1,2,7)
我明白了:
但我想过滤结果是这样的:
我应该如何修改该查询以获取第一次到达日期和最后一次离开日期?我知道我需要做一些分组,但我不知道如何使用它..提前谢谢..
【问题讨论】:
标签: sql sql-server datetime group-by
假设您的 ArriveDate 和 LeaveDate 是日期而不是字符串,您可以尝试以下操作:
SELECT PersonID,
Name,
City,
MIN(ArriveDate),
MAX(LeaveDate)
FROM customertravel
WHERE PersonID IN (1, 2, 7)
GROUP BY PersonID,
Name,
City;
【讨论】:
您需要按除日期以外的所有列进行分组,然后找到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
【讨论】: