SQL Server 2008:将表行分组在一起
我有一个SQL Server 2008表,我需要将行分组为部分或组。每个部分都以零件号“组”开始。我想用唯一标识每个组的代码更新一个字段。我已经创建了一个游标来完成这项工作,但我希望更快。批处理操作会很好,并且可以接受更快的游标。谢谢SQL Server 2008:将表行分组在一起,sql,sql-server-2008,Sql,Sql Server 2008,我有一个SQL Server 2008表,我需要将行分组为部分或组。每个部分都以零件号“组”开始。我想用唯一标识每个组的代码更新一个字段。我已经创建了一个游标来完成这项工作,但我希望更快。批处理操作会很好,并且可以接受更快的游标。谢谢 USE QuoteWerks DECLARE @DocNo VARCHAR(30) = 'JHEAQ5947' DECLARE @validation_code nvarchar(30) = '' DECLARE @group_code int = 0 DECL
USE QuoteWerks
DECLARE @DocNo VARCHAR(30) = 'JHEAQ5947'
DECLARE @validation_code nvarchar(30) = ''
DECLARE @group_code int = 0
DECLARE @part_number nvarchar(30)
DECLARE myCursor CURSOR FORWARD_ONLY FOR
SELECT DI.ManufacturerPartNumber
FROM DocumentHeaders AS DH
INNER JOIN DocumentItems AS DI ON DH.ID = DI.DocID
WHERE DH.DocNo = @DocNo
ORDER BY DI.ID
FOR UPDATE OF DI.CustomText14, DI.CustomText03
OPEN myCursor
FETCH NEXT FROM myCursor INTO @part_number
WHILE @@FETCH_STATUS = 0
BEGIN
IF @part_number = 'Group'
BEGIN
SELECT @group_code = @group_code + 1
UPDATE DI
SET DI.CustomText14 = @group_code, DI.CustomText03 = @validation_code
FROM DocumentHeaders AS DH
INNER JOIN DocumentItems AS DI ON DH.ID = DI.DocID
WHERE CURRENT OF myCursor
END
ELSE
BEGIN
UPDATE DI
SET DI.CustomText14 = @group_code
FROM DocumentHeaders AS DH
INNER JOIN DocumentItems AS DI ON DH.ID = DI.DocID
WHERE CURRENT OF myCursor
END
FETCH NEXT FROM myCursor INTO @part_number
END
CLOSE myCursor
DEALLOCATE myCursor
请在
文本
而不是图像
中向我们展示您的表格模式、一些示例数据和预期结果,直到您提供进一步的信息,我才知道您想要它。但听起来您需要使用行编号()
。看看这个