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;
是否可以使用 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;