gpt4 book ai didi

sql - Row_Number Sybase SQL Anywhere 在多个条件下更改

转载 作者:行者123 更新时间:2023-12-04 10:10:27 26 4
gpt4 key购买 nike

我有一个返回的选择

EMP DOC  DATE
1 78 01/01
1 96 02/01
1 96 02/01
1 105 07/01
2 4 04/01
2 7 04/01
3 45 07/01
3 45 07/01
3 67 09/01

我想添加一个行号(我将它用作主 ID)但我希望它在“EMP”更改时始终更改,并且在文档与前一个相同时也不会更改,例如:
EMP DOC  DATE  ID
1 78 01/01 1
1 96 02/01 2
1 96 02/01 2
1 105 07/01 3
2 4 04/01 1
2 7 04/01 2
3 45 07/01 1
3 45 07/01 1
3 67 09/01 2

在 SQL Server 中,我可以使用 LAG比较以前的 DOC 但我似乎无法找到进入 SYBASE SQL Anywhere 的方法,我正在使用 ROW_NUMBER按“EMP”分区,但这不是我需要的。
SELECT EMP, DOC, DATE, ROW_NUMBER() OVER (PARTITION BY EMP ORDER BY EMP, DOC, DATE) ID -- <== THIS WILL CHANGE THE ROW NUMBER ON SAME DOC ON SAME EMP, SO WOULD NOT WORK.

有人有这方面的方向吗?

最佳答案

你可能想要 dense_rank() :

select
emp,
doc,
date,
dense_rank() over(partition by emp order by date) id
from mytable

这对具有相同 emp 的组中的行进行编号, 并且仅在 date 时增加变化,无间隙。

关于sql - Row_Number Sybase SQL Anywhere 在多个条件下更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61354438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com