Window 带条件的函数

Window Function with a condition

我有以下 table.

我可以在满足条件时创建 Window 函数 First_Value 吗?

例如,当is = 1 时我需要第一个值并按id 进行分区

表A

ID    Date       IS
 1     1/1/18    0
 1     1/2/18    1

我的作品:

   SELECT 
   CASE
   WHEN A.IS = 1 THEN A.DATE END)OVER (PARTITION BY A.ID ORDER BY A.DATE)                
   END FIRST_ATTEMPT_DT
   FROM TABLEA A

改用min()

select min(case when a.is = 1 then a.date end) over (partition by a.id)

您可以像下面这样使用:

   SELECT 
   (CASE
   WHEN A."is" = 1 THEN 
        First_Value("Date") OVER (PARTITION BY A.ID ORDER BY A."Date")  
   ELSE
        A."Date"
   END) as FIRST_ATTEMPT_DT
   FROM TABLEA A
   WHERE "is" = 1;

其中 ISDATE 是 Oracle 中保留的关键字,因此应将它们引用。

P.S。看来您想查看 First_Values 的结果,我将其与 "is" = 1[ 的情况相匹配=12=]

SQL Fiddle Demo