Привет.
Предлагаю, заинтересованным, разминку для ума. Подобного рода задачи на sql.ru называт "пятничными" :) Так или иначе, многие с подобного рода задачами салкиваются. Как правило, решение тоже, так или иначе работает :) Но хотелось бы, получить наиболее "красивое" решение, с применением именно "изюминок" Oracle. Сразу скажу, что у меня нет более-менее красивого решения этой задачи. Но хочется, с вашей помощью, его найти. И так, давайте попробуем.
Имеем таблицу вида:
Код:
ARTICLE DATE PRICE
000001 01.01.2006 100
000001 01.01.2007 200
000001 01.01.2008 300
000001 01.01.2009 400
000001 01.01.2010 500
000002 01.01.2006 100
000002 01.01.2007 200
000002 01.01.2008 150
000002 01.01.2009 220
000002 01.01.2010 210
Необходимо отобрать по каждоум артикулу ОДНИМ запросом последнюю цену. Не максимальную, а имено последнюю.
Для желающих попробовать, вот код:
Код:
CREATE TABLE YZTEST(
ARTICLE VARCHAR2(50) NOT NULL,
ARTDATE DATE NOT NULL,
PRICE NUMBER(14, 2))
/
INSERT INTO YZTEST(ARTICLE, ARTDATE, PRICE) VALUES('000001', TO_DATE('01.01.2006', 'DD.MM.YYYY'), 100);
INSERT INTO YZTEST(ARTICLE, ARTDATE, PRICE) VALUES('000001', TO_DATE('01.01.2007', 'DD.MM.YYYY'), 200);
INSERT INTO YZTEST(ARTICLE, ARTDATE, PRICE) VALUES('000001', TO_DATE('01.01.2008', 'DD.MM.YYYY'), 300);
INSERT INTO YZTEST(ARTICLE, ARTDATE, PRICE) VALUES('000001', TO_DATE('01.01.2009', 'DD.MM.YYYY'), 400);
INSERT INTO YZTEST(ARTICLE, ARTDATE, PRICE) VALUES('000001', TO_DATE('01.01.2010', 'DD.MM.YYYY'), 500);
INSERT INTO YZTEST(ARTICLE, ARTDATE, PRICE) VALUES('000002', TO_DATE('01.01.2006', 'DD.MM.YYYY'), 100);
INSERT INTO YZTEST(ARTICLE, ARTDATE, PRICE) VALUES('000002', TO_DATE('01.01.2007', 'DD.MM.YYYY'), 200);
INSERT INTO YZTEST(ARTICLE, ARTDATE, PRICE) VALUES('000002', TO_DATE('01.01.2008', 'DD.MM.YYYY'), 150);
INSERT INTO YZTEST(ARTICLE, ARTDATE, PRICE) VALUES('000002', TO_DATE('01.01.2009', 'DD.MM.YYYY'), 220);
INSERT INTO YZTEST(ARTICLE, ARTDATE, PRICE) VALUES('000002', TO_DATE('01.01.2010', 'DD.MM.YYYY'), 210);
Вбиваем его в тот же SQL Navigator (я пользовался именно им), и пробуем сделать выборку.