gpt4 book ai didi

sql - 根据相关行中的值更新列

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

我在 SQL Server 2008 中有一个如下表

  AMID                TierLevel
-------- -------------
999 GOLD
1000 SILVER
1000 GOLD
1000 PLATINUM
1000 BRONZE
1001 GOLD
1001 SILVER
1002 SILVER
1003 GOLD

现在我想像下面这样更新这个表
  AMID                TierLevel
-------- -------------
999 GOLD
1000 PLATINUM
1000 PLATINUM
1000 PLATINUM
1000 PLATINUM
1001 GOLD
1001 GOLD
1002 SILVER
1003 GOLD

这里的条件是
  • 我想要相同 AMID 的唯一 Tier 值,并且应在优先级基础中选择 Tier 值,例如
  • 铂金
  • 青铜
  • 这意味着如果它的 Tier 值中存在最高的值,则选择该值。就像我在第二个表中显示的那样,1000 的铂金和 1001 的金..

  • 请在这件事上给予我帮助

    谢谢,
    哈利

    最佳答案

    我会使用临时表来存储每个层的排名:

    DECLARE @Rank TABLE (ID INT NOT NULL PRIMARY KEY, Name VARCHAR(10) NOT NULL)
    INSERT @Rank VALUES (1, 'PLATINUM'), (2, 'GOLD'), (3, 'SILVER'), (4, 'BRONZE')

    ;WITH T AS
    ( SELECT AMID, TierLevel, MIN(ID) OVER(PARTITION BY AMID) [MinID]
    FROM #T
    INNER JOIN @Rank
    ON Name = TierLevel
    )
    UPDATE T
    SET TierLevel = Name
    FROM T
    INNER JOIN @Rank
    ON ID = MinID
    WHERE TierLevel <> Name

    这是使用以下示例数据完成的:
    CREATE TABLE #T (AMID INT, TierLevel VARCHAR(10))
    INSERT #T VALUES
    (999, 'GOLD'),
    (1000, 'SILVER'),
    (1000, 'GOLD'),
    (1000, 'PLATINUM'),
    (1000, 'BRONZE'),
    (1001, 'GOLD'),
    (1001, 'SILVER'),
    (1002, 'SILVER'),
    (1003, 'GOLD')

    关于sql - 根据相关行中的值更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10687879/

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