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

Откуда: Екатеринбург
Сообщений: 101
Помогите немогу сообразить как сделать.

select (jan+feb+mar+apr+may+jun+jul+aug+sep+okt+nov+dec)-otgr into from table

но надо чтобы сумма бралась в зависимости от даты которую я передам.
Например:
Дату даю '22.06.06' то просуммироваться должно до июня (jun).
17 май 06, 09:29    [2672341]     Ответить | Цитировать Сообщить модератору
 Re: Please Help.  [new]
Бомж
Member

Откуда: Баку, Азербайджан
Сообщений: 409
Если , моя Телепатия ! меня не подводит :

SELECT ( DECODE(TO_CHAR(TVOYA_data, 'MM'), '01', JAN, 0) + 
         DECODE(TO_CHAR(TVOYA_data, 'MM'), '02', FEB, 0) +
             ....
           ) - OTGR
INTO TVOYA_PEREMENNAYA 
FROM TVOY_TABLE


© Бомж Inc.
17 май 06, 09:37    [2672372]     Ответить | Цитировать Сообщить модератору
 Re: Please Help.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
tst> create table t1(may, jun) as select 1, 2 from dual;

Table created.

tst> select decode(sign(sysdate-to_date('010506', 'ddmmyy')), -1,0, may) +
  2         decode(sign(sysdate-to_date('010606', 'ddmmyy')), -1, 0, jun) from t1;

DECODE(SIGN(SYSDATE-TO_DATE('010506','DDMMYY')),-1,0,MAY)+DECODE(SIGN(SYSDATE-TO_DATE('010606','DDMMYY')),-1,0,JUN)
-------------------------------------------------------------------------------------------------------------------
                                                                                                                  1

tst> select decode(sign(sysdate+30-to_date('010506', 'ddmmyy')), -1,0, may) +
  2         decode(sign(sysdate+30-to_date('010606', 'ddmmyy')), -1, 0, jun) from t1;

DECODE(SIGN(SYSDATE+30-TO_DATE('010506','DDMMYY')),-1,0,MAY)+DECODE(SIGN(SYSDATE+30-TO_DATE('010606','DDMMYY')),-1,0,JUN
------------------------------------------------------------------------------------------------------------------------
                                                                                                                       3
17 май 06, 09:37    [2672373]     Ответить | Цитировать Сообщить модератору
 Re: Please Help.  [new]
он же
Member

Откуда:
Сообщений: 715
racer
Помогите немогу сообразить как сделать.

select (jan+feb+mar+apr+may+jun+jul+aug+sep+okt+nov+dec)-otgr into from table

но надо чтобы сумма бралась в зависимости от даты которую я передам.
Например:
Дату даю '22.06.06' то просуммироваться должно до июня (jun).


select (when a_date >= to_date('01.02.06','dd.mm.yyyy') then jan else 0)+
       (when a_date >= to_date('01.03.06','dd.mm.yyyy') then feb else 0)+
       (when a_date >= to_date('01.04.06','dd.mm.yyyy') then mar else 0)+
.....
17 май 06, 09:38    [2672379]     Ответить | Цитировать Сообщить модератору
 Re: Please Help.  [new]
racer
Member

Откуда: Екатеринбург
Сообщений: 101
он же
racer
Помогите немогу сообразить как сделать.

select (jan+feb+mar+apr+may+jun+jul+aug+sep+okt+nov+dec)-otgr into from table

но надо чтобы сумма бралась в зависимости от даты которую я передам.
Например:
Дату даю '22.06.06' то просуммироваться должно до июня (jun).


select (when a_date >= to_date('01.02.06','dd.mm.yyyy') then jan else 0)+
       (when a_date >= to_date('01.03.06','dd.mm.yyyy') then feb else 0)+
       (when a_date >= to_date('01.04.06','dd.mm.yyyy') then mar else 0)+
.....


это лучший вариант. Спасибо !!!
17 май 06, 10:06    [2672509]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить