Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 将最后一行更新为第一行值_Sql_Sql Server - Fatal编程技术网

Sql 将最后一行更新为第一行值

Sql 将最后一行更新为第一行值,sql,sql-server,Sql,Sql Server,我有下表格式 SeqID Control_ID Data_Value RowNum 1 SEARCH SEARCH 3 1 BROKERREF BZ815 4 1 SYSTEM 0 5 2 pdp pdp 1 2 test 123 2 2 system 235

我有下表格式

SeqID Control_ID    Data_Value  RowNum

 1    SEARCH         SEARCH      3
 1    BROKERREF      BZ815       4
 1    SYSTEM          0          5
 2    pdp            pdp         1
 2    test           123         2
 2    system         235         3 
SeqID Control_ID    Data_Value  RowNum

 1     BROKERREF      BZ815      4
 1     SYSTEM          0         5
 1     SEARCH         SEARCH     3
 2     test           123        2
 2     system         235        3 
 2     pdp            pdp        1
我想将表格更新为以下格式

SeqID Control_ID    Data_Value  RowNum

 1    SEARCH         SEARCH      3
 1    BROKERREF      BZ815       4
 1    SYSTEM          0          5
 2    pdp            pdp         1
 2    test           123         2
 2    system         235         3 
SeqID Control_ID    Data_Value  RowNum

 1     BROKERREF      BZ815      4
 1     SYSTEM          0         5
 1     SEARCH         SEARCH     3
 2     test           123        2
 2     system         235        3 
 2     pdp            pdp        1
我需要选择顶行作为每组序列ID的最后一行

注意:对于需要选择作为每个唯一sequenceID最后一行的行,Control_Id和DataValue列名将是相同的

提前感谢。

根据SeqID使用行号定位第一行。然后,在外部查询中,使用ORDERBY子句中的CASE表达式将此行放在最后一行 在其分区内的位置:

SELECT SeqID, Control_ID, Data_Value, RowNum
FROM (
   SELECT SeqID, Control_ID, Data_Value, RowNum,
          ROW_NUMBER() OVER (PARTITION BY SeqID ORDER BY RowNum) AS rn
   FROM mytable ) t
ORDER BY SeqID,
         CASE WHEN t.rn = 1 THEN 1 ELSE 0 END,
         RowNum

在更新后的表中,除了排序之外,还有什么变化?以及为什么要更新表;。