gpt4 book ai didi

sql - 如何通过分配序列号重命名项目?

转载 作者:行者123 更新时间:2023-12-01 12:10:08 25 4
gpt4 key购买 nike

我有下表:

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”,原因 AOA 开头, 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com