Sql server 2008 如何设置上一行';s列值?
我使用MS SQL Server 2008 R2 是否可以将StatusID=3的行中条形码列的值设置为StatusID=10的行中相同的值。尝试以下操作:Sql server 2008 如何设置上一行';s列值?,sql-server-2008,Sql Server 2008,我使用MS SQL Server 2008 R2 是否可以将StatusID=3的行中条形码列的值设置为StatusID=10的行中相同的值。尝试以下操作: DECLARE @t TABLE ( StatusID INT , UserID INT , BarCode CHAR(10) ) INSERT INTO @t VALUES ( 1, 3378, '-1' ), ( 2, 3378, '-1' ),
DECLARE @t TABLE
(
StatusID INT ,
UserID INT ,
BarCode CHAR(10)
)
INSERT INTO @t
VALUES ( 1, 3378, '-1' ),
( 2, 3378, '-1' ),
( 10, 3378, 'some_code1' ),
( 1, 3379, '-1' ),
( 3, 3379, '-1' ),
( 10, 3379, 'some_code2' );
WITH cte
AS ( SELECT StatusID ,
UserID ,
BarCode ,
ROW_NUMBER() OVER ( PARTITION BY UserID ORDER BY StatusID ) AS rn
FROM @t
)
UPDATE c1
SET BarCode = c2.BarCode
FROM cte c1
JOIN cte c2 ON c1.UserID = c2.UserID
AND c1.rn + 1 = c2.rn
WHERE c2.StatusID = 10
AND c1.StatusID = 3
SELECT * FROM @t
输出:
StatusID UserID BarCode
1 3378 -1
2 3378 -1
10 3378 some_code1
1 3379 -1
3 3379 some_code2
10 3379 some_code2
哪个列是您的订购列?它是另一个创建的列,在屏幕截图中未显示。