reading again i think it should be
select a.description, a.reference, s.date, s.price
from Article a join Sales s on a.code = s.article
join
(
select article, max(date) as [date] from sales
group by article) t
on s.article = t.article
and s.[date] = t.[date]
as code in sales represent code of sale and not article
another way is this
select description, reference, [date], price
from
(
select a.description, a.reference, s.[date], s.price,row_Number() over (partition by a.description order by s.date desc) as seq
from Article a join Sales s on a.code = s.article
)t
where seq=1
------------------------------------------------------------------------------------------------------
SQL Server MVP
http://visakhm.blogspot.com/