我有一个包含以下各列的表格(检查)
InspectionID(PK),ApartmentID(FK),HouseID(FK),InspectionDate
我想检索过去三个月未进行检查的所有房屋和公寓的清单,以及最后一个检查日期是什么。
没有房子或公寓可以多次出现,所以我不希望ApartmentID或HouseID中出现任何重复。
SELECT ApartmentID, HouseID, InspectionDate
FROM Inspection
WHERE InspectionDate <= '2018-07-18';
这给了我我想要的一切,当然,如果房屋和公寓经过多次检查,它会显示重复的房屋和公寓价值。
答案 0 :(得分:3)
您可以使用聚合:
SELECT ApartmentID, HouseID, MAX(InspectionDate)
FROM Inspection
GROUP BY ApartmentID, HouseID
HAVING MAX(InspectionDate) <= '2018-07-18';
这假设您需要ApartmentId
和HouseId
的唯一对。
想法是汇总数据,并使用HAVING
子句查找自给定日期以来尚未检查过的公寓。如果您希望查询具有基于当前日期的日期阈值:
HAVING MAX(InspectionDate) <= DATEADD(month, -3, GETDATE())