Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用无界跟随时在窗口函数中锚定值_Sql_Db2 - Fatal编程技术网

Sql 使用无界跟随时在窗口函数中锚定值

Sql 使用无界跟随时在窗口函数中锚定值,sql,db2,Sql,Db2,我有一些数据看起来像: K1 K2 V1 S1 V2 V3 A B C 1 . . A B D 2 D F A B D 2 D Z A B E 3 . . A B F 4 . . A B G 5 . . A B H 6 . . A X C 1 . . A X F 4 . . 我试图确定V2不为null(由表示)的行的V3中的值是否存在于K1和K2分区内任何后续行的V1中 因此,在本例中,第3行将被标记,因

我有一些数据看起来像:

K1 K2 V1 S1 V2 V3
A  B  C  1  .  .
A  B  D  2  D  F
A  B  D  2  D  Z
A  B  E  3  .  .
A  B  F  4  .  .
A  B  G  5  .  .
A  B  H  6  .  .
A  X  C  1  .  .
A  X  F  4  .  .
我试图确定V2不为null(由
表示)的行的V3中的值是否存在于K1和K2分区内任何后续行的V1中

因此,在本例中,第3行将被标记,因为第5行中存在F,但第4行不会被标记,因为没有Z

我从以下几点开始:

SELECT K1, K2, V1, S1, V2, V3,
  SUM(DECODE(V1, V3, 1, 0)) 
    OVER(PARTITION BY K1, K2 ORDER BY S1 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS F1
FROM table
ORDER BY K1, K2, S1

这里的问题是,V1和V3之间的解码比较是逐行进行的。在窗口函数中向前看时,是否有一种方法可以将V3的值“锚定”到当前行?

为什么不使用普通的旧SQL呢

select *
from Table1 as t1
where v2 != '.'
and v3 in (select v1
           from Table1 as t2
           where t2.k1 = t1.k1
           and   t2.k2 = t1.k2
           and   t2.s1 > t1.s1
           )
请看这里的小提琴: