Tak v rychlosti mě napadlo následující:

Kód:
SELECT [xx].[zbozi], [xx].[obchod], [yy].cena
from
(SELECT [zbozi]
      ,[obchod]
      ,max([datum]) as max_datum
  FROM [tabulka]  GROUP BY ZBOZI, obchod
) [xx]

left outer join [tabulka] [yy] on

[xx].[zbozi] = [yy].[zbozi]
and
[xx].[obchod] = [yy].[obchod]
and
[xx].[max_datum] = [yy].[datum]
První částí si vytahám max. datumy pro kombinace zboží - obchod, druhou částí tu tabulku najoinuju na sebe samou a dotáhnu si k tomu ty ceny... Asi by to šlo napsat elegantněji, ale já jsem to takhle zprovoznil... Nemám k dispozici mySQL, zkoušel jsem to na MS SQL serveru, ale snad jsem nepoužíval žádné "specialitky"