IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Sélection de données en SQL et dates


Sujet :

SAS Base

  1. #1
    Membre régulier
    Profil pro
    developpeur
    Inscrit en
    mai 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : mai 2013
    Messages : 40
    Points : 80
    Points
    80
    Par défaut Sélection de données en SQL et dates
    Bonjour,

    Avec SAS, je télécharge le contenu d'un fichier de plusieurs dizaines de milliers de lignes disponible sur un serveur en faisant un input.
    La DATE est formatée comme suit : format datum ddmmyy(10)
    J'obtiens une table.

    Plus loin, je cherche à sélectionner un nombre limité de lignes dans cette table au départ du champ DATE...
    Ca marche en utilisant en SQL : where datum between mdy(04,01,13) and mdy(04,30,13);
    ou en utilisant where datum between '01mar2013'd and '31mar2013'd;

    Mon problème est que les dates doivent être entrées manuellement.
    Je voudrais que SAS puisse les prendre à partir dy système sans que l'opérateur n'intervienne, le but final est d'obtenir une fichier Excel tout préparé...

    Les conditions sont les suivantes: il faut que la date de départ soit le 1er du mois précède la date d'aujourd'hui et le dernier jour aujourd'hui.

    Comment pourrais-je procéder, sachant que je suis vraiment bloqué (je suis plutôt un utilisateur de SQL et de VBA, beaucoup moins de SAS...

    Merci d'avance si vous pouvez m'aider...

  2. #2
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : mars 2005
    Messages : 1 364
    Points : 2 296
    Points
    2 296
    Par défaut
    SAS propose la fonction date() qui renvois la date du jour avec la fonction intnx tu peux ajouter ou soustraire une période a date() (ou une autre date SAS)

    http://www.caloxy.com/papers/57-255-30.pdf
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

  3. #3
    Membre régulier
    Profil pro
    developpeur
    Inscrit en
    mai 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : mai 2013
    Messages : 40
    Points : 80
    Points
    80
    Par défaut
    Bonjour !

    J'ai donc fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    data DATELIMITE;
     
    datedepart=intnx('month',date(),-1);
    depart=intnx('month',datedepart,0);
    fin=intnx('month',datedepart,1) - 1;
     
    put depart = ddmmyy10.;
    put fin = ddmmyy10.;
    run;
    Et j'ai les bonnes dates:


    depart=01/04/2013
    fin=30/04/2013

    Mais comment les utiliser dans mon query sql :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (select *
    from table
    where mut_dt between ''' !! depart ''' and ''' !! fin '''
    );
    SAS me dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR: Expression using IN has components that are of different data types.

    Merci d'avance si vous pouvez m'aider...

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : juin 2012
    Messages : 40
    Points : 100
    Points
    100
    Par défaut
    Bonjour ,

    Vous pouvez directement inclure les formules de calcul dans la proc sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DATA DATELIMITE;
     
    proc sql ;
    select *
    from table
    where mut_dt between intnx('month',date(),-1,'beginning') and intnx('month', date() , -1, 'end') ;
    quit;
    Les dates SAs ont des formats numériques (nbre de jours écoulés depuis le 1er janvier 1960) d'où le message d'erreur que vous avez obtenu.

    Cordialement,

  5. #5
    Membre régulier
    Profil pro
    developpeur
    Inscrit en
    mai 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : mai 2013
    Messages : 40
    Points : 80
    Points
    80
    Par défaut
    Genial, ça fonctionne !!!
    Merci mille fois, vous m'avez super-aidé.


    Je vous bise les pieds

  6. #6
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : mars 2005
    Messages : 1 364
    Points : 2 296
    Points
    2 296
    Par défaut

    Tu peux cliquer sur RESOLU?
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SQL | Sélection sur le max d'une date
    Par julie75 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/07/2014, 18h03
  2. Sélection de donnée par rapport à 1 date - 1 semaine
    Par mims1664 dans le forum Requêtes
    Réponses: 4
    Dernier message: 06/07/2009, 14h19
  3. Réponses: 4
    Dernier message: 09/05/2006, 08h55
  4. [VB.NET] Requete sql et date
    Par mic56 dans le forum Accès aux données
    Réponses: 11
    Dernier message: 03/06/2004, 10h39
  5. Convertir un type de donnée sous SQL Server
    Par Fleep dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/08/2003, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo