我编辑了我的答案,所以我的问题的解决方案是:
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
提前致谢。
答案 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;