2013-03-08 48 views
0

假设我有一个表SQL从多行合并最大值

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

,并为每个不同的ID我想在列值1,值和值3最大值返回一行,即

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

(当然还有其他的IDS比102表)

我设法用“的分区”做,但问题是,我在PowerBuilder的DataWindow的使用它,只要我贴它在那里整个IDE崩溃和项目被损坏。

我设法创建一个sql,为每行做3个内部连接,并返回每列最大值的选择。

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

在此先感谢您的回答!

+1

请注明您是通过添加适当的标签针对RDBMS(甲骨文,SQL服务器,MySQL的,等等) 。可能会有利用不被普遍支持的语言或产品功能的答案。此外,通过使用特定的RDBMS标记它,您的问题可能会得到更适合回答的人的关注。 – Taryn 2013-03-08 16:25:58

回答

3

使用GROUP BYMAX()

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