【问题标题】:Select row based on max date across several columns根据跨多列的最大日期选择行
【发布时间】:2016-01-31 11:25:38
【问题描述】:

对于mysql数据库

我有一个包含重复行的表,因为多列中的日期值。我希望根据跨多个日期列评估的最大日期值为每个唯一客户 ID 选择一行

[客户 ID、开始日期、停止日期、修改日期、购买日期]

对于每个客户 ID,我想返回 startDate、StopDate、modifyDate 或 buyDate 列中具有最大日期的行(日期列中有一些空值。

编辑以包含示例 - 但要确定如何在此处创建表格:

*** 编辑

一段时间以来一直在尝试在这里创建一个带有示例的表格。想不通。所以发图?返回所需的行以红色表示。

【问题讨论】:

  • 请编辑您的问题并提供示例数据和所需的结果。

标签: mysql sql


【解决方案1】:

假设值永远不是NULL,您可以使用greatest()

select t.*
from table t
where greatest(t.startDate, stopDate, buyDate) =
          (select max(greatest(t.startDate, stopDate, buyDate))
           from t t2
           where t2.customerid = t.customerid
          );

注意:如果多行包含最大日期,这将为客户返回多行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2015-05-19
    • 2016-09-04
    • 1970-01-01
    相关资源
    最近更新 更多