我有以下格式的表格
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的最后一行。
注意:Control_Id和DataValue列名对于需要被选为每个唯一sequenceID的最后一行的行是相同的
提前致谢。
答案 0 :(得分:0)
使用ROW_NUMBER()
找到每SeqID
的第一行。然后,在外部查询中,使用CASE
子句中的ORDER BY
表达式将此行放在最后一行中
在其分区内的位置:
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