2010-03-10 10 views

Répondre

8

Vous pouvez utiliser une vue en ligne:

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

Cela donnera ORA-00904: "caldate": identifiant invalide –

+2

@SachinChorasiya - Si vous aviez * regardé * Tony samp Vous auriez remarqué qu'il contenait une faute de frappe (que j'ai maintenant corrigée). C'est une très mauvaise idée d'exécuter du code sur Internet sans passer en revue correctement en premier. – APC

+0

Merci d'avoir réparé ça, Andrew. –

2

Vous pouvez sélectionner votre date de double et rejoindre les résultats:

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