获取SQL中表中每行的最大日期

时间:2018-02-22 15:16:44

标签: mysql sql

我编辑了我的答案,所以我的问题的解决方案是:

select  DISTINCT e.Cod_proiect
     , p.Descriere
     , p.Stare
     , p.ClientService
     , e.Data
  from ExpPoz as e 
  join Proiecte as p 
    on e.Cod_proiect=p.Cod_proiect 
             join ( 
                     select cod_proiect, max(data) maxDt 
                     from ExpPoz
                     group by cod_proiect 
                  ) latest on latest.cod_proiect = e.cod_proiect and latest.maxDt = e.Data and p.Stare='I'

其中出现以下错误:子查询返回的值超过1 我试图让每一行都有最大日期。

我有以下表结构:

a    date1
a    date2
a    date3
b    date4
b    date5

输出应该是,假设date3和date5是最旧/最大的:

a   date3
b   date5

提前致谢。

2 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

select  e.Cod_proiect
      , p.Descriere
      , p.Stare
      , p.ClientService
from ExpPoz as e join Proiecte as p on e.Cod_proiect=p.Cod_proiect 
                 join ( 
                         select cod_proiect, max(data) maxDt 
                         from ExpPoz
                         group by cod_proiect 
                      ) latest on latest.cod_proiect = e.cod_proiect and latest.maxDt = e.Data
where p.Stare='I'

请注意,您编写joins的方式非常陈旧,如果您使用现代join样式,则更好更明确。 在此查询中,我选择了您需要的所有内容,并使用cod_proiect的最新记录加入一次。

答案 1 :(得分:0)

你可以试试这个:

SELECT cod_proiect,
       MAX(data)
FROM
(
  SELECT DISTINCT
         ep.cod_proiect,
         ep.data
  FROM   ExpPoz   ep
  JOIN   Proiecte pr
    ON   ep.cod_proiect = pr.cod_proiect
   AND   pr.stare = 'I'
)
GROUP BY cod_proiect;