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 :

comment créer un numéro d'ordre sans curseur


Sujet :

Développement SQL Server

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut comment créer un numéro d'ordre sans curseur
    Bonjour,

    Je cherche comment créer un numéro d'ordre en SQL.
    Un exemple, j'ai une table avec ces données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    col1	col2
    1	A
    2	A
    3	A
    4	A
    5	B
    6	B
    7	B
    8	C
    je veux créer un numéro d'ordre comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    col1	col2	ord
    1	A	1
    2	A	2
    3	A	3
    4	A	4
    5	B	1
    6	B	2
    7	B	3
    8	C	1
    de façon à avoir une combinaison col2, ord unique.

    J'y arriverai facilement avec un curseur, mais est il possible d'y arriver sans?

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Sous SQL Server 2005, vous pouvez écrire :

    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
    DECLARE @Tb  TABLE
    (
    	col1 TINYINT,
    	col2 CHAR(1)
    )
     
    INSERT INTO @Tb VALUES (1, 'A')
    INSERT INTO @Tb VALUES (2, 'A')
    INSERT INTO @Tb VALUES (3, 'A')
    INSERT INTO @Tb VALUES (4, 'A')
    INSERT INTO @Tb VALUES (5, 'B')
    INSERT INTO @Tb VALUES (6, 'B')
    INSERT INTO @Tb VALUES (7, 'B')
    INSERT INTO @Tb VALUES (8, 'C')
     
    SELECT col1, col2, ROW_NUMBER() OVER(PARTITION BY col2 ORDER BY col1)
    FROM @Tb
    @++

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,

    Sous SQL Server 2005, vous pouvez écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT col1, col2, ROW_NUMBER() OVER(PARTITION BY col2 ORDER BY col1)
    FROM @Tb
    @++
    Merci, je ne la connaissais pas celle-là. En attendant j'ai trouvé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select t1.c1, t1.c2, count(1) ord
    from test t1
    inner join test t2
    	on t1.c2 = t2.c2
    	and t1.c1 >= t2.c1
    group by t1.c1, t1.c2

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Votre code fonctionnera aussi sous SQL Server 2000

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/04/2009, 14h39
  2. [.xls] Comment créer ce type de fichier sans avoir Excel ?
    Par fredppp dans le forum Framework .NET
    Réponses: 1
    Dernier message: 05/09/2008, 12h29
  3. comment créer son tchat gratuitement et sans pub ?!
    Par bnadem35 dans le forum Sécurité
    Réponses: 2
    Dernier message: 21/04/2006, 09h41

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