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

MS SQL Server Discussion :

Rajouter les numéros de ligne dans une colone d'une requete


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Rajouter les numéros de ligne dans une colone d'une requete
    Bonjour,

    Je voudrais dans une requete select rajouter une colone contenant le numéro de la ligne

    Num Col1 Col2
    0 jhj gfgg
    1 fsdf sdfsdf
    2 fsf ssddqs

    Comment faire pour rajouter cette fameuse colone ?

    Merci d'avance

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 56
    Points : 64
    Points
    64
    Par défaut
    Salut,
    voici une solution qui fonctionne si tu fais une procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE PROCEDURE ta_procedure
    AS
    CREATE TABLE #TEMP
    (
      ID INT IDENTITY(1,1),
      -- Ici les champs de ta requête
    )
     
    INSERT INTO #TEMP( /* Ici la liste des champs de #TEMP sauf ID) */ )
    -- Ici ta requête
     
    SELECT * FROM #TEMP

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    En fait on voudrais le faire dans une requete SQL pour que l'on puisse le fiare avec n'importe qu'elle requete selojn différent critères.

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Un peu plus simple et performant, mais selon la même idée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE PROCEDURE ta_procedure 
    AS 
    BEGIN
    SELECT * 
    INTO #TEMP
    FROM 
    ...
     
    ALTER TABLE #TEMP add COLUMN ID INT identity (1,1)
     
    SELECT * FROM #TEMP ORDER BY ID
    END
    cette façon de faire a une limite : elle n'accepte que des colonnes n'étant pas identity (on ne peut avoir qu'un identity par table... même temporaire)

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 56
    Points : 64
    Points
    64
    Par défaut
    Un peu plus simple et performant
    facade, tu fais d'abord un CREATE TABLE, puis un ALTER TABLE, alors que je ne fais qu'un CREATE TABLE... ou alors y a un truc qui m'échappe peut-être :

  6. #6
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Oui, il y a effectivement qqch qui vous échappe : le select into est une opération non loggée, et donc bien plus performante : c'est sur l'insertion et non sur la création de la table que le gain est donc fait.

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 56
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par fadace
    le select into est une opération non loggée, et donc bien plus performante
    Je ne le savais pas... merci !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 69
    Points : 61
    Points
    61
    Par défaut La réponse m'intéresse
    Bonjour,

    En faisant une recherche sur le forum j'ai trouvé un post avec exactement mon problème. Malheureusement je constate que la solution n'a pas été donnée.

    Aurai-je plus de chance que AntiSal?

    J'aimerais retourner dans un seul select le numéro de la ligne où je me trouve. L'équivalent du ROWID en Oracle.

    ex:

    N° colonne
    1 a
    2 b
    3 c

    Est-ce possible?

    Merci pour vos réponses

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

Discussions similaires

  1. Afficher les numéros des lignes dans l'éditeur
    Par hammag dans le forum Sql Developer
    Réponses: 5
    Dernier message: 02/04/2024, 09h45
  2. Réponses: 4
    Dernier message: 28/03/2008, 21h01
  3. Réponses: 12
    Dernier message: 12/09/2007, 16h28
  4. Réponses: 2
    Dernier message: 13/06/2006, 15h45
  5. Réponses: 2
    Dernier message: 03/11/2005, 11h49

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