窗口函数过滤

时间:2018-02-08 14:16:58

标签: sql oracle window-functions

可以使用窗口功能进行过滤吗?

我有下表

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的新列

首先 - 获取在startDate之前发生的所有指定日期,然后在role = REd时获取MAX assignedDate

输出应为:

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

1 个答案:

答案 0 :(得分:1)

我不这么认为我们需要使用窗口函数简单的聚合函数才能工作,如果你只需要检查那些角色为Red和assigneddate&lt; startdate(至少这是我从你的问题中理解的)我们可以在where子句过滤器中使用以下内容:

const libB = require('libB')