Bonjour,
Je souhaite créer une requête qui m'extraie d'une table toutes les informations pour lesquelles un champ appartient à une liste prédéterminée. Cette liste pouvant contenir plusieurs enregistrements complets ou tronqués.
Création de ma liste :
Dans cet exemple je souhaite récupérer par exemple toutes mes factures de décembre 2010 et ma première facture du 01/01/2011. Sachant que cette liste et une variable de mon programme et pourrait contenir davantage de critères.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DATA liste_facture; LENGTH n_facture $11; INPUT n_facture $; cards; 201012 20110101001; RUN;
Voici le code pour ma liste :
Je souhaite ainsi extraire de maTable tous les champs dont le N_facture commence par les valeurs de ma liste. Il me faudrait un mélange de IN et de LIKE. Pour l'exemple j'ai pris des valeurs numériques mais mon véritable champs peut contenir des caractères alphanmumériques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 DATA liste_facture; SET liste_facture; if length(compress(N_facture))<11 then N_facture=compress(N_facture||"%") ; else N_facture=compress(N_facture); RUN; Proc SQL noprint; SELECT Quote(N_facture) INTO : liste_facture separated BY ',' FROM N_facture; quit; %put liste_facture = &liste_facture;
Si jamais vous avez des idées? Par avance merci.
Partager