代码之家  ›  专栏  ›  技术社区  ›  StepUp

如何通过指定序号来重命名项目?

  •  3
  • StepUp  · 技术社区  · 6 年前

    DECLARE @OperatorPrice TABLE 
    (
        ID INT NOT NULL, DealerId INT NULL, DealerName VARCHAR(50) NULL
    )
    

    和样本数据:

    INSERT INTO @OperatorPrice 
    (
        ID, DealerId, DealerName
    )
    VALUES
      (226, 1,  'WestCarDealer')
    , (112, 1,  'WestCarDealer')
    , (266, 2, 'AO')
    , (112, 2, 'AO')
    , (93,  3, 'Best on the West')
    , (93,  3, 'Best on the West')
    

    我想要的是将所有经销商重命名为'Dealer1'、'Dealer2'、'Dealer3'。编号应按升序分配: AO 应重命名为“Dealer1”,因为 开始于 A , Best on the West Dealer2 因为它是从 B WestCarDealer 应重命名为 Dealer3 W .

      (226, 1, 'Dealer3')
    , (112, 1, 'Dealer3')
    , (266, 2, 'Dealer1')
    , (112, 2, 'Dealer1')
    , (93,  3, 'Dealer2')
    , (93,  3, 'Dealer2')
    

    独特材料的近似数量 DealerName

    为此我尝试使用游标,但无法存储要递增的数字。

    1 回复  |  直到 6 年前
        1
  •  4
  •   John Cappelletti    6 年前

    可以使用CTE更新表变量

    例子

    ;with cte as (
    Select *
          ,NewVal = concat('Dealer',dense_rank() over ( order by DealerName))
     From  @OperatorPrice
    )
    Update cte Set DealerName = NewVal
    

    更新@OperatorPrice

    ID  DealerId    DealerName
    226 1           Dealer3
    112 1           Dealer3
    266 2           Dealer1
    112 2           Dealer1
    93  3           Dealer2
    93  3           Dealer2