假设我有match_id
的以下值1,1,2,2,3,3 ......
是否可以使用SQL转换为以下值
1,2,3,4,5,6 ...
换句话说,按顺序列出所有match_id。对于第一个值,执行以下操作
firstvalue * 2 - 1
对于第二个值,执行以下操作
secondvalue * 2
答案 0 :(得分:3)
编辑:这是为SQL Server编写的。
select
case when (row_number() over (order by match_id)) % 2 = 1
then match_id * 2 - 1
else match_id * 2
end as output_value
from
myTable
编辑2 要更新行,您可以使用以下内容:
update
T
set match_id =
case when RowNumber % 2 = 1
then match_id * 2 - 1
else match_id * 2
end
from
(select
*,
(row_number() over (order by match_id)) as RowNumber
from myTable) T
答案 1 :(得分:0)
对于纯序列编号,这样做
;with TMP as (
select *, row_number() over (order by match_id) rownum
from myTable)
UPDATE TMP
SET match_id = rownum