我有一张有旅游细节的桌子。空码,tourId,旅游地点和旅游日期,我想检查谁是在一个给定日期的旅游?
员工X从01-01-2016到10-0-01-2016。
雇员Y由07-01-2016至12-01-2016
公司员工X将于2016年12月1日至2016年1月15日至2016年12月1日开始巡演。
表有以下详细信息
EmpCode TourId PlaceFrom PlaceTo TourDate
100 1 delhi jaipur 01-01-2016
100 1 jaipur mumbai 05-01-2016
100 1 mumbai delhi 10-01-2016
101 2 delhi pune 07-01-2016
101 2 pune delhi 12-01-2016
100 3 alwar jaipur 12-01-2016
100 3 jaipur udaipur 13-01-2016
100 3 udaipur alwar 15-01-2016TourId表示唯一的旅游
如果我在01-01-2016搜索谁在巡演,它应该返回100。
如果我在08-01-2016搜索谁在巡演,它应该返回100和101。
如果我在12-01-2016搜索谁在巡演,它应该返回102。
如果我在14-01-2016搜索谁在巡演,它应该返回100。
如何在postgresql中的单个查询中获得所需的输出。提前谢谢。
发布于 2016-03-30 12:07:01
您可以使用聚合函数:
select EmpCode, TourId
from t
group by EmpCode, TourId
having '2016-01-01' between min(TourDate) and max(TourDate);TourId在select中是可选的。
发布于 2016-03-30 12:20:08
SELECT EmpCode
FROM TourDetails
GROUP BY EmpCode
HAVING '2016-01-14' BETWEEN MIN(TourDate) AND MAX(TourDate);最有可能的EmpCode不应该出现在该表中,而应该出现在高级table中。此外,请考虑使用ISO 8601作为日期,或时间戳字段。
https://stackoverflow.com/questions/36308096
复制相似问题