sql - SQL Server 2008:将表行分组在一起
问题描述
我有一个 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
解决方案
推荐阅读
- javascript - 与js文件冲突
- angular - 如何在订阅 observable 之前使用 distinctUntilChanged 检查 json 对象
- angular - 角度6中的多个Api连续调用
- visual-studio-2017 - 使用 4.5.1 构建的 U-sql 引用程序集?而需要记录的 4.5
- c++ - boost::asio::io_context::run_one_for() 发送大缓冲区失败
- javascript - 2个数组之间的Jquery区别
- java - LocalSessionFactoryBean 无法映射 jar 文件 Spring 4 中的包
- sql - 仅选择具有最大日期的行
- lua - Lua 白名单仅清理和允许干净的 URL 字符串
- react-native - 基于本机的 SwipeRow - 无法添加 onPress/TouchableOpacity