gpt4 book ai didi

SQL Server 2008 : Update Statement: How to decrement a column for every 10000 records found in query

转载 作者:行者123 更新时间:2023-12-04 06:29:25 25 4
gpt4 key购买 nike

我有一张巨大的 table ,叫做 Items

P_ID    Item             Rank
1 ItemName1 ValueTBD

我需要能够编写一个更新语句来填充列“rank”的值,如下所示:
  • 前 10000 条记录需要值“10”
  • 对于每个后续 10000 条记录,“rank”的值将需要减少 1

  • 因此记录 20000 - 30000 :将具有“9”的“等级”值

    最佳答案

    假设当你说 'top' 和 'subsequent' 时,你实际上是在暗示 'order by P_ID ':

    with cte as (
    select Rank, row_number() over (order by P_ID) as row_rank
    from Items)
    update cte
    set Rank = 10 - (row_rank-1)/10000;

    这将使用正确的范围边界进行更新(1-10000 -> rank 10、10001-20000 - >rank 9、20001-30000 -> rank 8 等)并将为 100001 以上的范围分配负等级。您的要求不一致:您说'记录 20000-30000 将排在第 9 位'。您可能的意思是“记录 20001-30000 的排名为 8”。

    关于SQL Server 2008 : Update Statement: How to decrement a column for every 10000 records found in query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5625387/

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