Форум: "Базы";
Текущий архив: 2011.10.09;
Скачать: [xml.tar.bz2];
ВнизВыборка первых записей Найти похожие ветки
← →
mrdoc (2010-01-28 15:20) [0]Кто знает, как получить запрос выполняющий выборку клиентов их счетов и первых операций по счету.
Имеются представления
Счета (номер счета, дата открытия, состояние, ИНН, наименование клиента)
Клиенты (Наименование клиента, адрес, дата регистрации)
Операции (дата операции, сумма операции)
Представления Клиенты и Организации связаны с представлением Счета через поле ID.
Нужно за любое количество шагов получить реестр: номер счета, дата открытия, состояние, инн, наименование клиента, адрес, дата регистрации, дата (первой) операции, сумма (первой) операции.
написал запрос
Select Счета.*, Клиенты.*
From Счета, Клиенты
Where Счета.ID = Клиенты.ID
а вот как получить к этому первую операцию по клиенту не пойму.
попробовал запрос
Select ID, min (дата операции)
From Операции
Group by ID
группирует, но нет суммы.
База данных ORACLE.
для решения не обязательно использовать один запрос, можно и несколько разных, результаты которых потом свести в другой БД, например MS Access.
Задача практическая, необходима для проведения аудита.
на формирование указанного реестра есть совсем немного времени :-(
← →
Sergey13 © (2010-01-28 15:39) [1]> [0] mrdoc (28.01.10 15:20)
> Представления Клиенты и Организации связаны с представлением Счета через поле ID.
Что за "организации" и где эти поля?
← →
Sergey13 © (2010-01-28 15:54) [2]Как то так можно попробовать
Select Счета.*, Клиенты.*, Операции.*
From Счета, Клиенты, Операции,
(select операция.счет_ID,min(дата) as f_date from операции where счет.ID=операция.ID group by операция.счет_ID) first_oper
Where Счета.ID = Клиенты.ID
and Счета.ID=опрерации.счет_ID
and first_oper.счет_ID=Счета.ID
and first_oper.f_date=опрерации.дата
ЗЫ: задолбался язык переключать
← →
Кщд (2010-01-28 15:55) [3]
select acc.num, acc.start_dt, acc.status,
t.inn, t.name, t.address,
t.reg_date,
min(op.dt) op_dt,
min(op.name) keep (dense_rank first order by op.dt) op_name
from client t
join account acc
on t.acc_id = acc.id
join operation op
on acc.id = op.acc_id
group by acc.num, acc.start_dt, acc.status,
t.inn, t.name, t.address,
t.reg_date
← →
Кщд (2010-01-28 15:56) [4]к Кщд (28.01.10 15:55) [3]
op_name - это, конечно, опечатка: должно быть val, т.е. сумма
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2011.10.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c