Window 函数过滤

Window function filtering

是否可以使用 window 函数进行过滤?

我有以下table

ID    AssignedDate    StartDate    EndDate   userid   Role
1     1/1/17            1/1/18      2/1/18     rdsd    Red
1     1/15/17           1/1/18      2/1/18     adfd    Red
* 1     12/15/17          1/1/18      2/1/18     dfge    Red

我想看到每个 ID 一行和一个名为 FirstAssgnDate 的新列

首先 - 获取开始日期之前发生的所有分配日期,然后在角色 = REd

时获取最大分配日期

输出应该是:

Table

ID    FirstAssgnDate    StartDate    EndDate   userid   Role
1     12/15/17            1/1/18      2/1/18    dfge    Red

*应该返回此行。
我在想下面这样的事情?

  Select *
  max(assignedDate) Keep(when AssignedDate < StartDate) As FirstAssgnDate
  from tablea

我不认为我们需要使用 window 函数简单的聚合函数就可以工作,如果你只需要检查那些角色为 Red 和 assigneddate < startdate 的记录(至少这是我从你的理解问题)我们可以在 where 子句过滤器中使用这些,如下所示:

    select id,max(assigneddate),startdate,enddate,userid,role
    from tablea
    where asssigneddate < startdate and 
    role = 'Red'
    group by id,startdate,enddate,userid,role;