Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 2008:将表行分组在一起_Sql_Sql Server 2008 - Fatal编程技术网

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

我有一个SQL Server 2008表,我需要将行分组为部分或组。每个部分都以零件号“组”开始。我想用唯一标识每个组的代码更新一个字段。我已经创建了一个游标来完成这项工作,但我希望更快。批处理操作会很好,并且可以接受更快的游标。谢谢

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

请在
文本
而不是
图像
中向我们展示您的表格模式、一些示例数据和预期结果,直到您提供进一步的信息,我才知道您想要它。但听起来您需要使用
行编号()
。看看这个