1

我们有一个保存服务记录的 SQL Server 数据库。每个服务记录都有一个服务 ID。服务 ID 由日期、客户编号、服务代表以及当天每个订单增加 1 的增量部分组成。此外,我们的服务技术人员可以在任何站点拥有多个服务记录,因此也有一个主服务 ID 分配给服务 ID。主服务 ID 是该站点的第一个服务 ID。因此,如果该站点上只执行一项服务,则服务 ID 和主服务 ID 可以相同。如果有多个服务正在执行,则服务 ID 和主服务 ID 将不同。

我的任务是查看服务 ID 中是否存在任何空白。因此,我创建了一个查询,用于标识每个主要服务 ID 的最低服务 ID。我需要一种方法来为每个部分生成服务 ID 和主服务 ID 之间的所有服务 ID。我正在使用光标,因为我想不出另一种方法来做到这一点。所以我的问题是必须有更好的方法来做我想做的事情。谁能指出我正确的方向?

这是我的光标:

DECLARE @ServiceID as Varchar(12), 
        @ MainServiceID as Varchar(12),
        @TempSCR as Varchar(12)

DECLARE db_RecSet CURSOR FOR 
SELECT [ServiceID], Max([MainServiceID]) as MainServiceID
FROM Service_Table
WHERE MainServiceID like '12%'
AND [MainServiceID] <> [ServiceID]
GROUP BY [ServiceID]

OPEN db_RecSet
FETCH NEXT db_RecSet INTO @ServiceID, @ MainServiceID

WHILE (@@FETCH_STATUS = 0)
    BEGIN
        SET @TempSCR = @ServiceID
        WHILE @TempSCR <= @ MainServiceID
            BEGIN
            INSERT INTO [Temp_Identifiy_Possible_SCRHeader](ServiceID, MainServiceID)
                VALUES (@TempSCR, @ MainServiceID)
            SET @TempSCR = @TempSCR +1
            END 
        FETCH NEXT FROM db_RecSet INTO @ServiceID, @ MainServiceID
    END
CLOSE db_RecSet
DEALLOCATE db_RecSet
4

0 回答 0