SQL скрипт для исправления данных

Возможно, вы также пытаетесь индексировать неверно:

a = 'apple'
a(3) ===> 'str' object is not callable

a[3] = l
1
задан marc_s 28 March 2019 в 05:47
поделиться

4 ответа

использовать row_number()

select *, row_number() over(partition by InventoryId order by id) as newRevisionId
from tablename 
0
ответ дан fa06 28 March 2019 в 05:47
поделиться

создать таблицу # temp1 (A int, B int)

вставить в # temp1 (a, b) значения (1001,1234), (1002,2235), (1003,2235), (1004 , 2235), (1005,2235), (1006,2235), (1007,3234), (1008,3234), (1009,3234), (1010,3234), (1011,3234), (1012,3234) ), (1013,3234), (1014,3234)

выберите *, row_number () over (разделите на порядок b на b asc) из # temp1

0
ответ дан sai potnuru 28 March 2019 в 05:47
поделиться

Попробуйте это:

    DECLARE @Table TABLE(Id INT,InventoryId INT,RevisionId INT)

    INSERT INTO @Table
    SELECT 1001,1234,1 UNION ALL
    SELECT 1002,2235,1 UNION ALL
    SELECT 1003,2235,2 UNION ALL
    SELECT 1004,2235,2 UNION ALL
    SELECT 1005,2235,3 UNION ALL
    SELECT 1006,2235,4 UNION ALL
    SELECT 1007,3234,1 UNION ALL
    SELECT 1008,3234,2 UNION ALL
    SELECT 1009,3234,3 UNION ALL
    SELECT 1010,3234,3 UNION ALL
    SELECT 1011,3234,4 UNION ALL
    SELECT 1012,3234,5 UNION ALL
    SELECT 1013,3234,5 UNION ALL
    SELECT 1014,3234,6

    ;WITH cte
    AS(
        SELECT Id,InventoryId,RevisionId, ROW_NUMBER() OVER(PARTITION BY InventoryId ORDER BY id) AS NewRevision FROM @Table
      )
    UPDATE cte SET RevisionId=newRevision

    SELECT * FROM @Table
0
ответ дан Sahi 28 March 2019 в 05:47
поделиться

Если вы хотите обновить значения обратно в таблицу с новым RevisionId, вы можете использовать CTE, как показано ниже.

;with cte as
(
 select *, row_number() over(partition by InventoryId order by id) as rn
 from @table 
)

 update cte set RevisionId = rn
0
ответ дан PSK 28 March 2019 в 05:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: