根据其他列 SQL 的最大值更新列 [重复]

Posted

技术标签:

【中文标题】根据其他列 SQL 的最大值更新列 [重复]【英文标题】:Update column according max value from other column SQL [duplicate] 【发布时间】:2021-10-15 16:44:30 【问题描述】:

取“时间”列的最大值,我需要按标识列更新“寄存器”列组,设置寄存器 = 1,其余寄存器 = 0

初始表:

Identification | time | register
1              |  0       | 0
1              |  7       | 0
1              |  3       | 0
2              |  10      | 0
2              |  5       | 0
2              |  0       | 0
3              |  6       | 0
3              |  5       | 0
3              |  0       | 0

结束表:

Identification | time     | register
1              |  0       | 0
1              |  7       | 1
1              |  3       | 0
2              |  10      | 1
2              |  5       | 0
2              |  0       | 0
3              |  6       | 1
3              |  5       | 0
3              |  0       | 0

在 SQL 2017 中,表包含数千个寄存器

【问题讨论】:

【参考方案1】:

好像你想要一个CASE 表达式和一个窗口化的MAX

SELECT Identification,
       [time],
       CASE [time] WHEN MAX([time]) OVER (PARTITION BY Identification) THEN 1 ELSE 0 END AS register
FROM dbo.YourTable;

【讨论】:

以上是关于根据其他列 SQL 的最大值更新列 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

根据连接表的日期列之一的最大日期值执行更新 (Oracle)

根据由另一列分组的不同列的最大值获取值[重复]

SQL仅选择列上具有最大值的行[重复]

SQL仅选择列上具有最大值的行[重复]

SQL仅选择列上具有最大值的行[重复]

SQL仅选择列上具有最大值的行[重复]