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

Développement SQL Server Discussion :

SQL : Création d'une colonne en incrément automatique


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de crashyear
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Janvier 2006
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 267
    Par défaut SQL : Création d'une colonne en incrément automatique
    Bonjour,

    J'ai une requête qui me donne 2 colonnes et me retourne 20 lignes.
    Colonne 1 contient un numéro (265358, 563336, 55, 4896...)
    Colonne 2 contient une valeur pour chaque numéro
    Le résultat de ma requete est ordonné selon la colonne 2 (ASC)

    J'ai besoin de générer une 3eme colonne avec les valeurs de 1 à 20 et je ne sais pas comment faire.

    Je suis sous SQL Serveur 2000, donc le ROW_NUMBER() c'est pas la peine d'y penser. J'ai commencé à tester avec Identity mais ca ne donne pas ce que je veux.

    Quelqu'un aurait-il une idée?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    regarde ici.

  3. #3
    Membre éclairé Avatar de crashyear
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Janvier 2006
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 267
    Par défaut
    Merci, mais je vois toujours pas comment tourner ma requete SQL...

  4. #4
    Membre éclairé Avatar de crashyear
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Janvier 2006
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 267
    Par défaut
    J'avance... ou pas !

    Donc j'ai extrait les données qui m'interesse de ma table et je les ai insérée dans une autre table que l'on va appeler TBL_TEMP_01. Dedans j'ai une colonne Num et une autre colonne valeur...YESSSSSSSSSSSSSSSSSSSSSSS! J'ai trouvéééééééééééééééééé!!!!!!!!!!!!!!!!!!!!!!!!!!!
    WHAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!

    Dsl, c'était plus fort que moi

    Donc je garde ma table TBL_TEMP_01 et à partir de celle ci, je créé une seconde table temporaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select valeur, identity(int, 1,1) NumLigne
    INTO TBL_TEMP_02
    from (
    select * from TBL_TEMP_01
    ) as x
    order by valeur ASC
    et là "oh miracle" ca fonctionne !

    Ensuite il me fallait retrouvé la valeur du 90ème%, cad si j'ai 20 lignes retournée je devais recup la valeur de la ligne 18 (Vous comprenez?)
    Petit exemple : 20*90/100 = 18, donc je dois recup la valeur qui se trouve ligne 18

    Pour cela je fais cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select Delai
    from TBL_TEMP_02
    where NumLigne = (select round(max(numligne)*0.9,0) from TBL_TEMP_02)
    Par contre je me demande si le max(numligne) est plus avantageux qu'un count(*) ? Vous avez une idée ?

  5. #5
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Citation Envoyé par crashyear Voir le message
    Par contre je me demande si le max(numligne) est plus avantageux qu'un count(*) ? Vous avez une idée ?
    Les 2 fonctions n'ont pas le même comportement dans certains cas. A vous de voir si c'est important pour vous.

    Prenez par exemple le cas où vous supprimez un enregistrement de votre table qui ne soit pas la valeur maximum.

    La valeur MAX() ne changera pas mais la valeur COUNT() elle changera....

    ++

  6. #6
    Membre éclairé Avatar de crashyear
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Janvier 2006
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 267
    Par défaut
    Ok merci.
    Et en terme de performance, l'execution de MAX ou COUNT n'altère pas le temps d'execution de la requete ?

    (Ma table est une table temporaire qui est créée uniquement pour un traitement spécifique puis detruite)

    D'ailleur je cherche plutot le moyen de créér un fichier plat (txt) plutot que de créer une table.
    J'essaye de voir le << SELECT * INTO OUTFILE '...' FROM MaTable >> mais je n'arrive pas a m'en servir, j'ai une erreur, il n'aime pas le chemin que je lui ai mis. Je regarderais demain, mais si vous savez comment s'en servir d'ici là, n'hesitez pas à m'en faire part. Merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/08/2007, 08h11
  2. [SQL] Création d'une nouvelle base
    Par balabonov dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 27/09/2006, 15h14
  3. [SQL]Retour d'une colonne unique
    Par Le nain Attila dans le forum Oracle
    Réponses: 4
    Dernier message: 31/03/2006, 16h26
  4. Réponses: 6
    Dernier message: 15/12/2005, 14h29
  5. Instruction SQL qui supprime une colonne d'une table
    Par tseg dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/10/2003, 20h47

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