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 :

Dupliquer une ligne


Sujet :

SAS Base

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 119
    Points
    119
    Par défaut Dupliquer une ligne
    Bonjour,

    Je sèche sur qqch d'assez simple je pense ... dupliquer une ligne sas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    data &biblio..table1;
    set  &biblio..table2; 
     
    if (monchamp3 = 2) then do;
         /* C'est ici que je souhaite dupliquer la ligne que je suis en train de lire */ 
    end;
     
    run;
    y'a - t - il un moyen simple d'effectuer cette opération ? ... merci d'avance ...

  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 329
    Points
    2 329
    Par défaut
    l'outout marche bien dans ce cas.
    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
     
    DATA toto2;
    format cle $10. frequence 5. effectif 5.;
    input cle $ frequence effectif;
    cards;
    rean 10 .
    tutu 80 .
    titi 1 .
    tata 90 .
    k  . 2
    k  . 1
    ;
    run;
     
    data toto22; set toto2;
    if cle='tutu' then output;
    output;
    run;

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 376
    Points : 199
    Points
    199
    Par défaut
    Bonjour,

    L'output est en effet très pratique. Mais il y a t-il moyen de de dupliquer la ligne en modifiant certaines données.

    Dans l'exemple ce serait d'avoir une duplication de la ligne avec modification du champ "cle" "tutu" en "toto" :
    au lieu de
    Cet opération (dupliqué/modifié) doit de faire en même temps dû aux contraintes d'intégrités qui empêche les doublons.

    Merci d'avance

  4. #4
    Membre éclairé
    Homme Profil pro
    responsable adjoint service stat
    Inscrit en
    Mars 2009
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : responsable adjoint service stat
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 448
    Points : 823
    Points
    823
    Par défaut
    J'adore les exemples avec des toto, titi, tutu...

    Bon, une solution, si j'ai bien compris la question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DATA toto22; SET toto2;
    IF cle='tutu' then do ;
        output;
    	cle='toto';
    	output;
    	end ;
    run;

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 376
    Points : 199
    Points
    199
    Par défaut
    Merci pour cette réponse rapide.

    Le code fonctionne très bien

    Autre code pour avoir toute la table + la ligne dupliquée/modifiée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DATA cible; SET source;
    IF cle='tutu' THEN DO;
    	cle='toto';
    	OUTPUT;
    	cle='tutu';
    END ;
    OUTPUT;
    RUN;

  6. #6
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Points : 372
    Points
    372
    Par défaut
    Si je puis me permettre, un code propre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DATA cible; 
    SET source;
    OUTPUT;
    IF cle='tutu' THEN DO;
    	cle='toto';
    	OUTPUT;
    END ;
    RUN;

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 376
    Points : 199
    Points
    199
    Par défaut
    En effet c'est plus propre.

    Merci à tous

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

Discussions similaires

  1. [AC-2003] Dupliquer une ligne d'une table
    Par sinifroth dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 20/04/2009, 16h23
  2. Procedure pour dupliquer une ligne
    Par gdeon dans le forum PL/SQL
    Réponses: 3
    Dernier message: 15/01/2009, 20h52
  3. Dupliquer une ligne sauf un champ
    Par brassouille dans le forum PL/SQL
    Réponses: 7
    Dernier message: 09/12/2008, 15h13
  4. Comment dupliquer une ligne ?
    Par gspeed007 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 09/11/2008, 20h02
  5. Dupliquer une ligne
    Par khokho dans le forum Administration
    Réponses: 2
    Dernier message: 26/07/2007, 15h47

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