Форум: "Базы";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
ВнизПомогите составить запрос на Oracle Найти похожие ветки
← →
vlgrig1961 (2004-06-23 08:25) [0]Здравствуйте уважаемые знатоки Оракла.
Помоги составить SQL запрос:
есть таблица с разными датами, надо выбрать по одной записи
на дату <= текущей (т.е. последние данные)
Nomer Data Summa
------ ------ ------
1 01.01.04 100
1 11.01.04 150
1 02.02.04 350
2 20.01.04 500
2 28.02.04 600
3 31.12.03 1560
3 01.02.04 2300
Выбрать на дату <= 01.02.04
1 11.01.04 150
2 20.01.04 500
3 01.02.04 2300
Можно ли такое сделать ?
← →
Sergey13 © (2004-06-23 08:38) [1]select nomer,summa,min(sysdate-data)
from table
group by 1,2
← →
Johnmen © (2004-06-23 09:37) [2]
SELECT * FROM Table T1
WHERE T1.Date=(SELECT MAX(T2.Date) FROM Table T2 WHERE (T1.Nomer=T2.Nomer) AND (T2.Date<=01.02.04)
← →
asp © (2004-06-23 09:41) [3]Что значит "по одной записи"? По одной в каком наборе (nomer, data, summa)?
← →
Жук © (2004-06-23 10:19) [4]
> Johnmen © (23.06.04 09:37) [2]
А если записей с макс.датой больше 1 ?
← →
Johnmen © (2004-06-23 10:33) [5]>Жук © (23.06.04 10:19) [4]
>А если записей с макс.датой больше 1 ?
Ну, естественно, и получим больше 1. Что не противоречит постановке вопроса...
:)
Но телепатически вдумавшись в вопрос, предполагаю, что не может быть более 1 платежа за дату.
← →
Sergey13 © (2004-06-23 10:42) [6]Мой первый пост - фигня. Поторопился в знатоки. 8-)
select t1.* from test t1,
(select nomer,max(data) data
from test
where data<=to_date("01.02.04")
group by nomer) t2
where t1.nomer=t2.nomer and t1.data=t2.data
В принципе очень похоже на [2], но статистика (без индексов) вроде чуть лучше.
2Жук © (23.06.04 10:19) [4]
>А если записей с макс.датой больше 1 ?
Значит будет больше 1. 8-)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c