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

Sql 如何通过指定序号重命名项目?,sql,sql-server,tsql,pivot,Sql,Sql Server,Tsql,Pivot,我有下表: 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,

我有下表:

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'因为
AO
A
开头,
西部最佳
应重命名为
Dealer2
因为它以
B
开头,
WestCarDealer
应重命名为
Dealer3
,因为它以
W
开头

因此,所需的输出应如下所示:

  (226, 1, 'Dealer3')
, (112, 1, 'Dealer3')
, (266, 2, 'Dealer1')
, (112, 2, 'Dealer1')
, (93,  3, 'Dealer2')
, (93,  3, 'Dealer2')
唯一的
经销商名称
的大约数量为50家经销商

我怎样才能用这种方式给汽车经销商重新命名


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

您可以使用CTE更新表格变量

示例

;with cte as (
Select *
      ,NewVal = concat('Dealer',dense_rank() over ( order by DealerName))
 From  @OperatorPrice
)
Update cte Set DealerName = NewVal
ID  DealerId    DealerName
226 1           Dealer3
112 1           Dealer3
266 2           Dealer1
112 2           Dealer1
93  3           Dealer2
93  3           Dealer2
更新@OperatorPrice

;with cte as (
Select *
      ,NewVal = concat('Dealer',dense_rank() over ( order by DealerName))
 From  @OperatorPrice
)
Update cte Set DealerName = NewVal
ID  DealerId    DealerName
226 1           Dealer3
112 1           Dealer3
266 2           Dealer1
112 2           Dealer1
93  3           Dealer2
93  3           Dealer2

这只是为了混淆数据还是什么?老实说,你在这里挣扎是因为你的表没有正常化。DealerName应该位于数据库中的一个位置,而且只能位于一个位置,最像Dealers表。“把它放在另一张桌子上表明它的设计很糟糕。”@SeanLange是的,我知道。我的SQL知识非常贫乏,我不是这个表的设计者,但我想找到一种方法来做到这一点。我不打算用这个数据永久地更新表,它只是临时表所必需的。如果这个问题很愚蠢,我真的很不好意思问这个问题,但我已经尽力了。谢谢你的理解,比我快几秒钟,约翰。一如既往地干得好@“我要去迪斯尼世界!”@SeanLange是认真的吗?我有那么老吗?几乎没有。我不得不去查一下,我猜这是关于80年代末的商业广告的,大约10年前,这些广告又死灰复燃了。我从来都不是一个大的电视观众,所以它想念我。此外,在那段时间里,我一天中的大部分时间都有点模糊……嗯。。。。college@StepUp总是乐于助人