Народ помогите сформировать правильный селект из таблицы
Таблица1
Код товара, дата, цена
002 14.02.2015 45
001 12.05.2015 40
002 14.08.2014 45
001 11.06.2013 35
002 12.12.2015 44
001 12.05.2015 46
Нужно выбрать товар с его ценой по последней дате!!!
но если есть в один и тот же день 2 и более товара с разными ценами - тогда выбирается максимальная цена за этот день
как в нашем примере с товаром 001
Результат выглядит вот так:
Код товара, дата, цена
001 12.05.2015 46
002 12.12.2015 44
MS SQL 2000 !!!!
Всем спасибо..
PS что-то я не могу догнать как это реализовать одним селектом...
select a.id_food, a.xdata AS data, max(b.price) as Price, max(unit) AS unit, MAX(recalcunit) as recalcUnit from
(select max(data) as xdata, id_food from storage where operation = 1 and rashod > 0 group by id_food) a
LEFT join storage b on a.id_food = b.id_food and a.xdata = b.data
Group by a.id_food, a.xdata
ORDER By cast(replace(a.Id_food,'_','') as int)
Вроде так сделал но не уверен ...
Таблица1
Код товара, дата, цена
002 14.02.2015 45
001 12.05.2015 40
002 14.08.2014 45
001 11.06.2013 35
002 12.12.2015 44
001 12.05.2015 46
Нужно выбрать товар с его ценой по последней дате!!!
но если есть в один и тот же день 2 и более товара с разными ценами - тогда выбирается максимальная цена за этот день
как в нашем примере с товаром 001
Результат выглядит вот так:
Код товара, дата, цена
001 12.05.2015 46
002 12.12.2015 44
MS SQL 2000 !!!!
Всем спасибо..
PS что-то я не могу догнать как это реализовать одним селектом...
select a.id_food, a.xdata AS data, max(b.price) as Price, max(unit) AS unit, MAX(recalcunit) as recalcUnit from
(select max(data) as xdata, id_food from storage where operation = 1 and rashod > 0 group by id_food) a
LEFT join storage b on a.id_food = b.id_food and a.xdata = b.data
Group by a.id_food, a.xdata
ORDER By cast(replace(a.Id_food,'_','') as int)
Вроде так сделал но не уверен ...