Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 минимальная дата  [new]
aslanaslan
Member

Откуда:
Сообщений: 31
здравствуйте всем
у меня есть таблица
календарь выплат
id, id_klient, id_dogovor, summa, date_viplat, pogasheno, ostalos_pogasit, nomer_viplati
и viplati_view id, id_calendar, id_klient, id_dogovor, summa, date_viplat, pogasheno, ostalos_pogasit, nomer_viplati все тоже самое
из вьюшки выплаты надо выбрать строку по id клиента с минимальной датой
пробовал через select into получается каша
11 июн 21, 12:37    [22334320]     Ответить | Цитировать Сообщить модератору
 Re: минимальная дата  [new]
aslanaslan
Member

Откуда:
Сообщений: 31
aslanaslan, declare
id_calendar number(10);
id_dogovor1 number(10);
id_klient1 number(10);
id_dogovor number(10);
id_klient number(10);
date_viplat date;
date_viplat1 date;
summa1 number(10);
pogasheno1 number(10);
ostalos_pogasit1 number(10);
nomer_viplati1 number(10);
summa number(10);
pogasheno number(10);
ostalos_pogasit number(10);
nomer_viplati number(10);
begin
select min(date_viplat) into date_viplat1 from viplati_view where 17 = :calendar_viplat.id_klient group by id_klient, summa, pogasheno, ostalos_pogasit, nomer_viplati, id_dogovor;
select summa into summa1 from viplati_view where id_klient = :calendar_viplat.id_klient group by id_klient, summa, pogasheno, ostalos_pogasit, nomer_viplati, id_dogovor;
select pogasheno into pogasheno1 from viplati_view where id_klient = :calendar_viplat.id_klient group by id_klient, summa, pogasheno, ostalos_pogasit, nomer_viplati, id_dogovor;
select ostalos_pogasit into ostalos_pogasit1 from viplati_view where id_klient = :calendar_viplat.id_klient group by id_klient, summa, pogasheno, ostalos_pogasit, nomer_viplati, id_dogovor;
select nomer_viplati into nomer_viplati1 from viplati_view where id_klient = :calendar_viplat.id_klient group by id_klient, summa, pogasheno, ostalos_pogasit, nomer_viplati, id_dogovor;
select id_dogovor into id_dogovor1 from viplati_view where id_klient = :calendar_viplat.id_klient group by id_klient, summa, pogasheno, ostalos_pogasit, nomer_viplati, id_dogovor;
select id_klient into id_klient1 from viplati_view where id_klient = :calendar_viplat.id_klient group by id_klient, summa, pogasheno, ostalos_pogasit, nomer_viplati, id_dogovor;
end;
11 июн 21, 12:52    [22334339]     Ответить | Цитировать Сообщить модератору
 Re: минимальная дата  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 3070
aslanaslan,

какая у Вас версия оракля?

полей много keep будет неудобен

используйте row_number()/rownum=1


одна строка с максимальной ЗП в 10 отделе
SQL> l
  1* select * from (select e.* from emp e where deptno=10 order by sal desc ) where rownum=1
SQL> /

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7839 KING       PRESIDENT            17.11.81       5000                    10

SQL>


ps
select
список "полей" через запятую
into
список переменных через запятую
from ttt...

.....
stax
11 июн 21, 15:14    [22334464]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить