首页 > 解决方案 > 如何为偶数行和奇数行设置值?

问题描述

我有下表

db_name server_name approver
cube1   server1 
cube1   server2 
cube2   server3 
cube2   server4 

我想用以下内容更新每个偶数行(假设索引从 0 开始)和奇数行上的批准者列:

偶数(第 1 行):批准人 1 奇数(第 2 行):批准人 2

我的最终目标是让桌子看起来像这样

db_name server_name approver
cube1   server1 approver1
cube1   server2 approver2
cube2   server3 approver1
cube2   server4 approver2

没有主键/ID 列,也不打算包含一个

我怎样才能从这个声明开始实现我正在寻找的东西?

UPDATE Table1
SET approvers = 'approver1'
GO 

标签: sql-server

解决方案


你可以使用ROW_NUMBERmodulo,但你需要一个 id 列

像这样的东西(尚未测试)。你需要同样的“偶数”

-- get all ids from the odd numbers
With TableData  As
(
      SELECT ID, ROW_NUMBER() OVER (ORDER BY id ASC) AS RowNumber
      FROM Table1
      where  (RowNumber, %  2) = 1 --odd
)
-- update the odd numbers with  approver1
UPDATE Table SET approvers = 'approver1'
FROM Table1
INNER JOIN TableData ON Table1.ID = TableData.ID

推荐阅读