SQL用于合并多行的最大值

时间:2013-03-08 16:25:20

标签: sql max rows

假设我有一张桌子

 -----------------------------------------------
|   id   |   value1   |   value2   |   value3   |
 -----------------------------------------------
|   102  |     10     |      1     |     3      |
 -----------------------------------------------
|   102  |     2      |      11    |     0      |
 -----------------------------------------------
|   102  |     0      |      9     |     13     |
 -----------------------------------------------
|   102  |     3      |      5     |     7      |
 -----------------------------------------------

并且对于每个不同的id,我想在列value1,value2和value3中返回一个最大值的行,即

 -----------------------------------------------
|   id   |   value1   |   value2   |   value3   |
 -----------------------------------------------
|   102  |     10     |     11     |     13     |
 -----------------------------------------------

(当然桌子上还有102个以外的其他ID)

我设法用“分区依据”来做,但问题是我必须在powerbuilder的数据窗口中使用它,一旦我将它粘贴在那里整个IDE崩溃并且项目被破坏。

我设法创建了一个sql,每行有3个内连接,其中选择返回每列的最大值。

还有其他更简单的方法吗?

提前感谢您的回答!

2 个答案:

答案 0 :(得分:3)

使用GROUP BYMAX()

SELECT  id,
        MAX(value1) val1,
        MAX(value2) val2,
        MAX(value3) val3
FROM    tableName
GROUP   BY ID

答案 1 :(得分:1)

SELECT id, MAX(value1) value1, MAX(value2) value2, MAX(value3) value3
FROM yourtable
GROUP BY id