我正在尝试对 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 开始。
我以为会比较容易,但是我的头好痛。
任何建议都非常感谢。
只是把它扔在那里,也许你认为你想要的:
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 的视图而不是;