2016-03-30 13 views
0

私はツアーの詳細を持っているテーブルを持っています。 empcode、tourId、ツアーの場所とツアーの日付私は与えられた日付にツアー中の人をチェックしたいですか? 2016年7月1日から2016年12月1日に2016年1月1日から2016年10月1日にXがツアーであるPostgreSQLの同じ列の日付のセットに指定された日付のレコードを取得する方法


Yがツアーにある従業
社員Xは、12-からツアーであります01から2016


15-01-2016への表には、次の詳細

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-2016 

TourIdは、私が2016年1月1日にツアーに誰であるか検索する場合、それは100を返すべきユニークなツアー
を意味を持っています
08-01-2016にツアー中の人を検索すると、100と101が返されます。
12-01-2016でツアー中の人を検索すると が返されます。 -01-2016返す必要があります100

postgresqlの単一のクエリで希望の出力を取得する方法。 ありがとうございます。

答えて

1

あなたは、集計関数を使用することができます。

select EmpCode, TourId 
from t 
group by EmpCode, TourId 
having '2016-01-01' between min(TourDate) and max(TourDate); 

TourIdselectではオプションです。

+0

@a_horse_with_no_name。 。 。ありがとうございました。 –

0
SELECT EmpCode 
FROM TourDetails 
GROUP BY EmpCode 
HAVING '2016-01-14' BETWEEN MIN(TourDate) AND MAX(TourDate); 

EmpCodeは、そのテーブルに存在してはいけませんが、上位のToursテーブルに存在する可能性が高いです。 また、日付の場合はISO 8601、TIMESTAMPフィールドの使用を検討してください。

関連する問題