Sql server 如何在SQL Server中以增量方式向相关行分配批号?
如果要在两个字段中的任何一个发生更改时增加批次号,如何在时间顺序表中增量分配批次号?这是原始表格:Sql server 如何在SQL Server中以增量方式向相关行分配批号?,sql-server,tsql,window-functions,row-number,Sql Server,Tsql,Window Functions,Row Number,如果要在两个字段中的任何一个发生更改时增加批次号,如何在时间顺序表中增量分配批次号?这是原始表格: Customer Item Time A Apples 1:00 PM A Apples 1:10 PM A Oranges 1:20 PM A Apples 1:30 PM B Oranges 1:40 PM A Apples 1:50 PM
Customer Item Time
A Apples 1:00 PM
A Apples 1:10 PM
A Oranges 1:20 PM
A Apples 1:30 PM
B Oranges 1:40 PM
A Apples 1:50 PM
C Apples 2:00 PM
我想做的是分配一个批号。请注意,前两行分配了相同的编号,因为它们都是Customer A和Apple。请注意,在第4行中,我们返回到客户A的Apple,但它被分配了下一个批号,而不是返回到第1批:
Customer Item Time Batch
A Apples 1:00 PM 1
A Apples 1:10 PM 1
A Oranges 1:20 PM 2
A Apples 1:30 PM 3
B Oranges 1:40 PM 4
A Apples 1:50 PM 5
C Apples 2:00 PM 6
您可以使用LAG函数来确定其中一个字段是否更改。使用运行总和对更改进行编号:
以cte为例
选择*,大小写
当LAGCustomer OVER ORDER BY Time=客户且LAGItem OVER ORDER BY Time=项目时,则为0
其他1
以chg结束
从t
选择*,按时间将订单汇总为批次
来自cte
您可以使用LAG函数来确定其中一个字段是否更改。使用运行总和对更改进行编号:
以cte为例
选择*,大小写
当LAGCustomer OVER ORDER BY Time=客户且LAGItem OVER ORDER BY Time=项目时,则为0
其他1
以chg结束
从t
选择*,按时间将订单汇总为批次
来自cte