在列下面的例子中sequence
应该是,在某些列共享相同的值行的标识符- compania, hrEntr, hrSaida, durJornada, durInterv, iniInterv, termInterv, sistema_horario, turno
-但是它不应该考虑到计算一个列- dia
。
因此,作为第一五行分享这些列中的图片说明,以便在sequence
应为1排6,不共享所有以前的值都应该有它自己的sequence
设置为2号。
我合作过ROW_NUMBER() OVER (PARTITION BY...
但也就是在启动时匹配列停它产生相反的结果。
有没有一种方法来创建我想要的结果?
你可以使用RANK()函数。 检查该解决您的需求:
drop table if exists stackoverflowTbl;
/********************************************************** DDL+DML */
create table stackoverflowTbl(id int identity (1,1), txt int)
GO
insert stackoverflowTbl (txt) values (1),(1),(2),(1),(3),(22),(22)
GO
select * from stackoverflowTbl
GO
/********************************************************** solution */
select id,txt,
ROW_Number () OVER (order by txt) - RANK ( ) OVER ( partition by txt order by id ) as MySequence
from stackoverflowTbl
GO