【发布时间】:2018-02-02 19:24:36
【问题描述】:
我有下表:当该日期在 StartDate 和 EndDate 之间时,我需要捕获第一个服务日期,下面是我的语法。
表A
ServiceDate StartDate EndDate ID PROGRAM
11/25/15 12/14/15 12/17/15 1 HIGH
12/14/15 12/14/15 12/17/15 1 HIGH
1/20/16 12/14/15 12/14/15 1 HIGH
输出:
StartDate EndDate ID PROGRAM FIRST_SERVICE_DT
12/14/15 12/17/15 1 HIGH 12/14/15
sql
SELECT *, CASE WHEN SERVICEDATE NOT BETWEEN STARTDATE AND ENDDATE THEN NULL
WHEN SERVICEDATE BETWEEN STARTDATE AND ENDDATE THEN FIRST_VALUE(TRUNC(SERVICEDATE)) OVER (PARTITION BY ID ORDER BY SERVICEDATE)
ID ORDER BY SERVICEDATE)
END FIRST_SERVICE_DT
我的查询产生了不正确的结果,需要做什么才能获得我想要的输出?
【问题讨论】:
-
只需要servicedate在startdate和enddate之间的记录,丢弃剩余的记录?