可以用窗口函数进行过滤吗?
我有下表
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
我不认为所以我们需要使用窗口函数简单的聚合函数才能工作,如果你只需要检查角色为Red的那些记录和赋值的<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;