Как установить значение для четных и нечетных строк? - PullRequest
1 голос
/ 26 июня 2019

У меня есть следующая таблица

db_name server_name approver
cube1   server1 
cube1   server2 
cube2   server3 
cube2   server4 

Я хочу обновить столбец утверждающего в каждой четной строке (при условии, что индекс начинается с 0) и нечетную строку следующим образом:

четная (1-я)строка): Approver1 нечетный (2-й ряд): Approver2

Моя конечная цель - чтобы таблица выглядела следующим образом

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

I не имеет первичногостолбец ключа / идентификатора, не планируя включать один из них

Как мне добиться того, что я ищу, начиная с этого утверждения?

UPDATE Table1
SET approvers = 'approver1'
GO 

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Просто еще один вариант ...

* ** 1003 тысяча два * Пример
;with cte as (
Select *
      ,RN= Row_Number() over (Order By db_name,server_name) % 2
 From  YourTable
 )
 Update cte
    Set approver = case when RN=1 then 'ApproverX' else 'ApproverY' end

Обновленная таблица

db_name server_name approver
cube1   server1     ApproverX
cube1   server2     ApproverY
cube2   server3     ApproverX
cube2   server4     ApproverY
1 голос
/ 26 июня 2019

Вы можете использовать ROW_NUMBER и по модулю , но здесь вам нужен столбец идентификатора

Примерно так (еще не проверено). Вам нужно то же самое для "даже"

-- 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...