我有下表:
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')
我想要的是将所有经销商重命名为“经销商 1”、“经销商 2”、“经销商 3”。编号应按升序分配:
AO
应重命名为“经销商 1”,原因 AO
以 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
是50个经销商。我怎样才能以这种方式重命名汽车经销商?
为此,我尝试使用游标,但无法存储要递增的数字。
最佳答案
您可以使用 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
关于sql - 如何通过分配序列号重命名项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52432461/