Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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 如何设置上一行';s列值?_Sql Server 2008 - Fatal编程技术网

Sql server 2008 如何设置上一行';s列值?

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' ),

我使用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' ),
        ( 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

哪个列是您的订购列?它是另一个创建的列,在屏幕截图中未显示。