Bonjour,

Je bute atrocement (voyez l'heure) sur une requête sql que je veux faire en une seule passe.
NOTE :Le %orasql est une macro permettant d'utiliser en sas la syntaxe sql oracle.



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
%let DateD=08/04/2009; 
%let Numtie=1979800;   
%let ADCDEB=352;       
 
%orasql(
       create table refus as
       select a.IDFDOS,
               a.DATETD,
               a.DATDEC,
               a.IDFINTAGTPTN,
               a.CODAGNPTN,
               a.NUMDOSPTN,
               b.SMNCLD  as SMNCLDETD 
       FROM  tf_dcfrfu_j a,
                td_tps b
       where NUMPERADC >= &ADCDEB and
             TYPETD='O' and
             CODPRO=CODSERPRO and
             trunc(DATETD) >= TO_DATE('&DateD','DD/MM/YYYY') and
             NUMTIE in (select NUMTIE002 from td_tieptn_j
                   where NUMTIE002=&Numtie)
             and trunc(a.datetd)=trunc(b.jou)
                );


Mon soucis : les colonnes "DATDEC" et "DATETD" sont des dates.
La table DWH.TD_TPS est une table d'équivalence temps permettant la liaison entre une date "JOU" et des équivalence temporelles (ici ce sera la variable "SMNCLD" (semaine civile calendaire) )
En gros, dans cette même étape, je voudrais pouvoir créer 2 colonnes supplémentaires ("SMNCLDDEC" et "SMNCLDETD") représentant respectivement l'équivalence des variables "DATETD" ET "DATDEC" par rapport à la table TD_TPS

Dans mon exemple, cela fonctionne si je n'ai qu'une seule date(cad juste DATETD et pas en plus "DATDEC").
En ce cas "SMNCLDETD" me donne bien l'équivalence de "DATETD" par rapport à la table TD_TPS.

Mais comment réussir à faire la même chose, en une même étape pour la seconde date. Sachant que bien sur, les variables "DATDEC" et "DATETD" sont différentes.

Le faire en une et même étape est une contrainte. Sinon en 2 ou 3 étapes je pourrais le faire (par exemple en utilisant du SAS en étape data-set)

Avez-vous des idées ?

Merci d'avance.

Cdt,