Sql 对行进行编号,并在特定条件下将计数器重置回1
如何在SQL Server中对关键字重置计数器?在以下数据中,每次找到字符串“A”时,都需要将计数器重置为1:Sql 对行进行编号,并在特定条件下将计数器重置回1,sql,sql-server,tsql,window-functions,Sql,Sql Server,Tsql,Window Functions,如何在SQL Server中对关键字重置计数器?在以下数据中,每次找到字符串“A”时,都需要将计数器重置为1: Item Date A 01.01.2019 B 02.01.2019 C 03.01.2019 D 04.01.2019 A 05.01.2019 B 06.01.2019 A 07.01.2019 B 08.01.2019 C 09.01.2019 D 10
Item Date
A 01.01.2019
B 02.01.2019
C 03.01.2019
D 04.01.2019
A 05.01.2019
B 06.01.2019
A 07.01.2019
B 08.01.2019
C 09.01.2019
D 10.01.2019
E 11.01.2019
A 12.01.2019
A 13.01.2019
A 14.01.2019
B 15.01.2019
每次找到A时,我都需要重置计数器:
Count Item Date
1 A 01.01.2019
2 B 02.01.2019
3 C 03.01.2019
4 D 04.01.2019
1 A 05.01.2019
2 B 06.01.2019
1 A 07.01.2019
2 B 08.01.2019
3 C 09.01.2019
4 D 10.01.2019
5 E 11.01.2019
1 A 12.01.2019
1 A 13.01.2019
1 A 14.01.2019
2 B 15.01.2019
比如:
以cte为例
选择*,COUNTCASE WHEN Item='A',然后选择1作为GroupNum按日期结束订单
从t
选择*,按GroupNum按日期排序的分区上的行数为[Count]
来自cte
按日期订购
cte为每一行分配一个运行计数,该计数在遇到错误时递增。行是基于此计数器分配的行编号
从你的问题样本来看,似乎总是A=1,B=2,C=3,等等。。。如果你的系列中没有漏洞,你能把A=>1,B=>2,C=>3等等映射出来吗?在同一天可以有多个项目吗?“A”项可以在一次约会中重复吗?我只是在简化我的问题。Item是批处理作业的名称,Date是时间戳。我有一系列子对象的日志条目,我需要找到来自同一批运行的日志条目。这有点棘手,因为由于错误,上一个作业并不总是相同的。始终定义起点A,但终点可以是D、B或A本身。