Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我有一个场景,客户编号经常更改,现在我需要找到分配的最后一个客户编号_Sql Server - Fatal编程技术网

Sql server 我有一个场景,客户编号经常更改,现在我需要找到分配的最后一个客户编号

Sql server 我有一个场景,客户编号经常更改,现在我需要找到分配的最后一个客户编号,sql-server,Sql Server,我在SQL Server中有一个客户日志表,它记录了客户编号的更改 From_Cust# To_Cust# DateModified A1 A2 1/11/2001 A2 A3 2/11/2001 A3 A4 2/11/2001 B1 B2 3/11/2001 B2 B3 3/30/2001 对于某些客户来说,进入门槛相当高,高达2

我在SQL Server中有一个客户日志表,它记录了客户编号的更改

From_Cust#  To_Cust#  DateModified
A1          A2        1/11/2001
A2          A3        2/11/2001
A3          A4        2/11/2001
B1          B2        3/11/2001
B2          B3        3/30/2001
对于某些客户来说,进入门槛相当高,高达200级

我试图得到的是找到上次更改的客户编号值,并将其应用于从第一个客户开始的所有客户

From_Cust#  Latest_Cust#
A1          A4
A2          A4
A3          A4
B1          B3
B2          B3

如何实现这一点?

您可以使用以下查询,该查询利用了:

递归CTE的所谓锚定成员:

SELECT From_Cust#, To_Cust# AS To_Cust#, 
          To_Cust# AS Latest_Cust#
   FROM mytable AS m1
   WHERE NOT EXISTS (SELECT 1
                     FROM mytable AS m2
                     WHERE m1.To_Cust# = m2.From_Cust#)
将选择包含“最终”客户的所有记录:

From_Cust#  To_Cust#    Latest_Cust#
-------------------------------------
A3          A4          A4
B2          B3          B3 

所谓的CTE递归成员将获取客户层次结构中的所有记录。

递归CTE可以做到这一点,但是!!!为什么您要更改客户编号???您的表是否有时间戳指示客户编号的分配时间?客户编号是否真的是字母数字且可能重复,如您的示例中所示?我将尝试编写一个函数来实现这一点。此示例数据不足以回答此问题。我猜你的客户不是那种格式,所以首先提供现实的价值观。其次,如果您有其他列可用于确定订单,如添加时的列或增量ID,那么这需要包含在问题中,因为给定了您的数据,无法解决此问题。该表有一个日期字段,指示客户编号何时更改,除此之外,没有增量ID。客户编号是数字。我只是把它们做成字母数字,以便于理解场景。
From_Cust#  To_Cust#    Latest_Cust#
-------------------------------------
A3          A4          A4
B2          B3          B3