2015-10-30 204 views
1

对于mysql数据库根据跨越多个列的最大日期选择行

我有一个包含重复行的表,因为几列中的日期值。我期待选择基于跨几个日期列评价了最大日期值对每个独特的客户ID单行

[客户ID,的startDate,StopDate,modifyDate,buyDate]

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

编辑包含示例 - 但要确定如何创建表这里:

***编辑

现在已经尝试了很长时间来创建一个表格。无法弄清楚。所以发布图片?返回的所需行以红色表示。

enter image description here

+1

请编辑您的问题,并提供样本数据和预期结果。 –

回答

0

假设值总是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 
     ); 

注:如果不止一行包含最大日期,这将返回多行的客户。