SQL-选择多个/所有列,但排除一两个特定列中的重复数据?

时间:2018-10-18 10:27:15

标签: sql sql-server

我有一个包含以下各列的表格(检查)

InspectionID(PK),ApartmentID(FK),HouseID(FK),InspectionDate

我想检索过去三个月未进行检查的所有房屋和公寓的清单,以及最后一个检查日期是什么。

没有房子或公寓可以多次出现,所以我不希望ApartmentID或HouseID中出现任何重复。

SELECT ApartmentID, HouseID, InspectionDate
FROM Inspection
WHERE InspectionDate <= '2018-07-18';

这给了我我想要的一切,当然,如果房屋和公寓经过多次检查,它会显示重复的房屋和公寓价值。

1 个答案:

答案 0 :(得分:3)

您可以使用聚合:

SELECT ApartmentID, HouseID, MAX(InspectionDate)
FROM Inspection
GROUP BY ApartmentID, HouseID
HAVING MAX(InspectionDate) <= '2018-07-18';

这假设您需要ApartmentIdHouseId的唯一

想法是汇总数据,并使用HAVING子句查找自给定日期以来尚未检查过的公寓。如果您希望查询具有基于当前日期的日期阈值:

HAVING MAX(InspectionDate) <= DATEADD(month, -3, GETDATE())