对 SQL Server 表中的非唯一列重新编号

问题描述 投票:0回答:1

我正在尝试对 SQL Server 2019 表中名为 Count 的列重新编号。

布局是这样的:

日期 地点 商店
2023-02-01 AU 商店1 1
2023-02-01 AU 商店1 3
2023-02-01 AU 商店1 4
2023-02-01 英国 商店1 2
2023-02-01 英国 商店1 4
2023-02-01 英国 商店1 5

我正在尝试对

Count
列重新编号,因此,对于每个不同的
Date
Location
Store
Count
列的数字是连续的,对于给定的
Date
Location 
Store

例如,对于

2023-02-01|AU|Store1
,计数应从 1,3,4 更改为 1,2,3。

对于英国商店,同一日期应从 2,4,5 更改为 1,2,3。

对于给定的

Date
Location
Store
的第一行,计数应始终从 1 开始。

我以为会比较容易,但是我的头好痛。

任何建议都非常感谢。

sql sql-server count alter
1个回答
1
投票

只是把它扔在那里,也许你认为你想要的:

update n set Count = Newcount
from (
  select *, Row_Number() over(partition by date, location, store order by count) Newcount
  from mytemptable
)n;

我认为您应该实现一个 view 来包含计数列,而不是将其作为表中的列,然后查询视图将始终具有正确的计数。

create view Myview as
select *, Row_Number() over(partition by date, location, store order by <your ordering criteria>) Count
from mytemptable;

然后只需使用 mytemptable 的视图而不是

© www.soinside.com 2019 - 2024. All rights reserved.