2010-03-10 3 views

ответ

8

Вы можете использовать в линии зрения:

select calcdate from 
(
select startDate, endDate, 
     decode (:pValue,1, 
       select sysdate from dual, 
       select activation_date from account where AcNo = 1234) as calcdate 
) 
where calcdate between startDate and endDate; 
+0

Это даст ORA-00904: «caldate»: неверный идентификатор –

+2

@SachinChorasiya - Если бы вы * * посмотрели * на тома Тони вы бы заметили, что в нем есть опечатка (которую я сейчас исправил). Это очень плохая идея - запустить код из Интернета, не рассмотрев сначала. – APC

+0

Спасибо за исправление этого, Андрей. –

2

Вы можете выбрать дату из двух и присоединиться результаты:

select * 
from <<your table with startDate and endDate columns>> -- Since you ommited the main "from" clause from your statement 
,  (
     select decode(:pValue 
         , 1, sysdate 
         , (select activation_date from account where AcNo = 1234) 
        ) as calDate 
     from dual 
     ) c 
where c.calDate between startDate and endDate 
... -- any other conditions you may need 
Смежные вопросы