【问题标题】:SQL to merge max values from multiple rowsSQL合并多行的最大值
【发布时间】:2013-03-09 00:27:10
【问题描述】:

假设我有一张桌子

----------------------------------------------------------- |编号 |值1 |值2 |价值3 | ----------------------------------------------------------- | 102 | 10 | 1 | 3 | ----------------------------------------------------------- | 102 | 2 | 11 | 0 | ----------------------------------------------------------- | 102 | 0 | 9 | 13 | ----------------------------------------------------------- | 102 | 3 | 5 | 7 | -----------------------------------------------------------

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

----------------------------------------------------------- |编号 |值1 |值2 |价值3 | ----------------------------------------------------------- | 102 | 10 | 11 | 13 | -----------------------------------------------------------

(当然表中还有102以外的其他id)

我设法用“partition by”来做到这一点,但问题是我必须在 powerbuilder 的数据窗口中使用它,一旦我将它粘贴到那里,整个 IDE 就会崩溃并且项目会损坏。

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

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

提前感谢您的回答!

【问题讨论】:

  • 请通过添加适当的标签(Oracle、SQL Server、MySQL 等)来指定您的目标关系数据库管理系统。可能有一些答案利用了不受普遍支持的语言或产品功能。此外,通过使用特定的 RDBMS 对其进行标记,您的问题可能会受到更适合回答的人的关注。

标签: sql max rows


【解决方案1】:

使用GROUP BYMAX()

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

【讨论】:

    【解决方案2】:
    SELECT id, MAX(value1) value1, MAX(value2) value2, MAX(value3) value3
    FROM yourtable
    GROUP BY id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-03
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 2011-03-30
      • 1970-01-01
      相关资源
      最近更新 更多