Sql server 更新组MS SQL上的增量行数
我在下面寻找的输出Sql server 更新组MS SQL上的增量行数,sql-server,Sql Server,我在下面寻找的输出 CREATE TABLE PickSequence( [PickItemCode] [varchar](30) NOT NULL, [PickSequence] [numeric](18, 0) NULL, ) INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695D-CV',1) INSERT INTO PickSequence (PickItemCode, PickSequen
CREATE TABLE PickSequence(
[PickItemCode] [varchar](30) NOT NULL,
[PickSequence] [numeric](18, 0) NULL,
)
INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695D-CV',1)
INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695D-CV',2)
INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695D-CV',3)
INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695D-CV',NULL)
INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695D-CV',NULL)
INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695D-CV',NULL)
INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695C-CV',NULL)
INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695C-CV',NULL)
INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695C-CV',NULL)
INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695C-CV',NULL)
INSERT INTO PickSequence (PickItemCode, PickSequence) VALUES ('695C-CV',NULL)
SELECT PickItemCode, PickSequence FROM PickSequence ORDER BY PickItemCode, PickSequence
| PickItemCode | PickSequence |
|:------------:|--------------|
| 695D-CV | 1 |
| 695D-CV | 2 |
| 695D-CV | 3 |
| 695D-CV | NULL |
| 695D-CV | NULL |
| 695D-CV | NULL |
| 695C-CV | NULL |
| 695C-CV | NULL |
| 695C-CV | NULL |
| 695C-CV | NULL |
| 695C-CV | NULL |
使用下面的代码,我可以查询创建我要查找的序列号的表,但不确定如何让它查看PartItemCode的最高值
| PickItemCode | PickSequence |
|:------------:|--------------|
| 695D-CV | 1 |
| 695D-CV | 2 |
| 695D-CV | 3 |
| 695D-CV | 4 |
| 695D-CV | 5 |
| 695D-CV | 6 |
| 695C-CV | 1 |
| 695C-CV | 2 |
| 695C-CV | 3 |
| 695C-CV | 4 |
| 695C-CV | 5 |
我要做的是用PickItemCode分组的序列中的下一个数字来更新PickSequence值。uhm…什么?你能澄清一下结果是什么吗?类似于
ROW_number()的内容(按PickItemCode顺序分区,当PickSequence为空时,按大小写,然后按1或0结束,PickSequence)
?以文本形式发布表格和数据,向我们展示db模式、示例数据和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。我更新了问题以更好地反映问题。希望有帮助
SELECT PickItemCode,
PickSequence = ROW_NUMBER() OVER(PARTITION BY PickItemCode ORDER BY PickItemCode) ,
[Part_Index] = DENSE_RANK() OVER (ORDER BY PickItemCode)
FROM PickSequence
UPDATE UpdateTarget
SET PickSequence = NewSequence
FROM
(
SELECT PickSequence,
ROW_NUMBER() OVER(PARTITION BY PickItemCode ORDER BY CASE WHEN PickSequence IS NULL THEN 1 ELSE 0 END, PickSequence) as NewSequence
FROM PickSequence
) as UpdateTarget