Есть таблица с номенклатурой, ценами и датами. Например:
Конденсатор 10.10.2002 200
Резистор 11.10.2002 210
Транзистор 12.10.2002 300
Резистор 11.10.2003 250
Транзистор 13.12.2003 350
Конденсатор 15.12.2003 240
Транзистор 14.09.2004 400
Конденсатор 30.12.2004 270
Резистор 17.05.2005 300
Мне нужно получать строки по последней и предпоследней дате. Т.е. если пользователь указывает, что ему нужны данные по Конденсатору, то получает строку
Конденсатор 15.12.2003 240 Конденсатор 30.12.2004 270
А если пользователь не указывает Номенклатуру, тогда должен получить данные по всей Номенклатуре
Конденсатор 15.12.2003 240 Конденсатор 30.12.2004 270
Резистор 11.10.2003 250 Резистор 17.05.2005 300
Транзистор 13.12.2003 350 Транзистор 14.09.2004 400
У меня параллельно этой таблице, ведется еще одна таблица со значениями всей номенклатуры по последней дате. Типа СрезПоследних в 1С. Т.е. в ней записи
Конденсатор 30.12.2004 270
Резистор 17.05.2005 300
Транзистор 14.09.2004 400
И я сделал следующий запрос:
naim-это наименование номенклатуры
date-это дата
prise-это цена
sample-это таблица с основными данными
samplePos-это таблица с данными по последним данным (СрезПоследних)
select top 1 a.naim, a.date, a.prise, e.naim, e.date, e.prise from sample as a
left outer join samplePos as e on
(a.naim = e.naim) and (a.date < e.date)
where (e.date <> '') and (a.naim = 'Конденсатор')
order by a.date desc
получается как надо
Конденсатор 15.12.2003 240 Конденсатор 30.12.2004 270
Т.е. запрос берет строку с максимальной датой, которая меньше последней
А если не указывать наименование Номенклатуры (т.е. a.naim = 'Конденсатор') тогда берет первую попавшуюся. У меня например:
Резистор 11.10.2003 250 Резистор 17.05.2005 300
а надо по всем
Конденсатор 15.12.2003 240 Конденсатор 30.12.2004 270
Резистор 11.10.2003 250 Резистор 17.05.2005 300
Транзистор 13.12.2003 350 Транзистор 14.09.2004 400
Подскажите пожалуйста, как можно. Нужен универсальный запрос, чтобы работал в обоих случаях, когда пользователь указывает или не указывает номенклатуру