sql - 给每个group id设置group的最大值

标签 sql sql-server sql-server-2008

这可能是一个愚蠢的问题,而且非常简单,但我现在很心烦意乱,没有找到任何解决方案。

我有一个这样的表:

ID | Value | Gr_Id | Gr_Value
------------------------------
a  |0      |1      |Null
b  |2      |2      |Null
c  |4      |2      |Null
d  |1      |3      |Null
e  |3      |4      |Null
f  |3      |4      |Null
g  |2      |5      |Null
h  |3      |5      |Null

期望的输出:

ID | Value | Gr_Id | Gr_Value
------------------------------
a  |0      |1      |0
b  |2      |2      |4
c  |4      |2      |4
d  |1      |3      |1
e  |3      |4      |3
f  |3      |4      |3
g  |2      |5      |3
h  |3      |5      |3

所以我想更新组值并设置group_id的最大值。 谢谢。

最佳答案

我认为这会解决您的问题:

SELECT ID, Value, Gr_Id, (
           SELECT MAX(Value)
           FROM tableName t2 
           WHERE t1.Gr_Id = t2.Gr_Id
) as Gr_Value
FROM tableName t1

尝试一下;希望对你有帮助

关于sql - 给每个group id设置group的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35290790/

相关文章:

SQL Server 2017 Express LocalDB 可用吗?

java - Microsoft SQL 和 JDBC 中 Prepared Statements 中奇数位置的参数

mysql - 在 MySQL 存储函数中对 CHAR 使用 Case 语句

sql - mdx中元组和集合的区别

sql-server - 存储过程中最多可以传递多少个参数

sql-server - 带条件的 T-SQL Rank()

sql-server - 是否可以获取仅读取数据的存储过程列表?

c# - 将时间跨度转换为 float

sql - Format() 函数不起作用?

java - 在 SQL 或 Java 中过滤数据?