如何过滤结果以具有最大日期和最小日期

时间:2019-07-11 15:01:12

标签: sql sql-server

我正在分析一个包含CrewID及其时间表的数据库。我正在选择“ X”天,这意味着他们有一天休息。我想找回他们的第一天假期,只有最后一天休息。我提供的代码导致在给定日期范围内的所有天假。如何确保仅剩下第一天和最后一天两个结果?

我已经尝试过min([ActivityDate])和max([ScheduleDepartureDate]),但这会导致错误。

SELECT 
--            [LogId]
--      ,[Company]
--      ,[ScheduleType]
      [CrewID]
      ,[ActivityDate]
      ,[Position]
--      ,[Base]
      ,[ScheduleDepartureDate]
      ,[TripNo]

         */
  FROM [DSWAREHOUSE].[DS_ADMIN].[F_CrewSchedule_Actual] with (nolock)
  where TripNo = 'X' and ActivityDate between getdate() and  getdate()+7 
  order by CrewID asc , ActivityDate asc 

;

以上代码的输出为:

CrewID  ActivityDate   Position  ScheduleDepartureDate  TripNo
211 2019-07-18 00:00:00.000 CA  2019-07-18 00:00:00.000 X
314 2019-07-17 00:00:00.000 CA  2019-07-17 00:00:00.000 X
314 2019-07-18 00:00:00.000 CA  2019-07-18 00:00:00.000 X
343 2019-07-12 00:00:00.000 CA  2019-07-12 00:00:00.000 X
343 2019-07-13 00:00:00.000 CA  2019-07-13 00:00:00.000 X
343 2019-07-14 00:00:00.000 CA  2019-07-14 00:00:00.000 X
343 2019-07-15 00:00:00.000 CA  2019-07-15 00:00:00.000 X
343 2019-07-16 00:00:00.000 CA  2019-07-16 00:00:00.000 X
343 2019-07-17 00:00:00.000 CA  2019-07-17 00:00:00.000 X
343 2019-07-18 00:00:00.000 CA  2019-07-18 00:00:00.000 X...


I would like it to result in:
211 2019-07-18 00:00:00.000 CA  2019-07-18 00:00:00.000 X
314 2019-07-17 00:00:00.000 CA  2019-07-17 00:00:00.000 X
314 2019-07-18 00:00:00.000 CA  2019-07-18 00:00:00.000 X
343 2019-07-12 00:00:00.000 CA  2019-07-12 00:00:00.000 X
343 2019-07-18 00:00:00.000 CA  2019-07-18 00:00:00.000 X...

0 个答案:

没有答案