我在PostgreSQL上,我试图找到一个可以解决我的问题的查询。
这就是我所需要的:
|COL1|COL2|COL3|RANK
| A | G | V2 | NULL
| A | B | V1 | 1
| A | C | V1 | 1
| A | D | V1 | 1
| A | D | V2 | NULL
| A | E | V1 | 2
字符串
简而言之,对于按COL 1-COL 2排序的连续行,我需要得到COL 3 = V1的有序RANK。
我想使用**LAG()**函数来检查下一行,然后比较当前行和下一行之间的COL 3值,如下所示:
SELECT *, lag(COL3) over(partition by COL1 order by COL1, COL2) as COL_CHECK
FROM table
型
我真的不明白该如何管理它,因为当COL 3 = V2时,我需要RANK列NULL,而当COL 3 = V1时,我需要增加RANK。
谢谢
1条答案
按热度按时间vlurs2pr1#
如果存在确保确定性排序的唯一列(例如主键),这里有一个使用两个行号之间的差异的解决方案:
字符串
Demo here