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 :

Compteur incrémental lors d'INSERT


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 62
    Points : 24
    Points
    24
    Par défaut Compteur incrémental lors d'INSERT
    Bonjour a tous,

    Lors d'un insert, j'aimerai créer une colonne qui contient un compteur qui s'incrémente pour chaque ligne ayant pour similarité le BoardCode. Lorsque le BoardCode change, le compteur se reinitialise a 1. Je ne vois pas du tout comment faire :/

    Merci d'avance.

    Image de mon select qui me permettra de faire mon insert : Nom : Sans titre.png
Affichages : 882
Taille : 455,9 Ko

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Il faut déjà définir sur quel critère s'effectue le tri.

    Ensuite, vous pouvez faire simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SUM(1) OVER(PARTITION BY BoardCode ORDER BY <critère de tri>)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 62
    Points : 24
    Points
    24
    Par défaut
    Cela ne me convient pas. Enfaite, le résultat que j'ai la c'est la somme de toutes les lignes comportant le même BoardCode et je ne veux pas de somme.

    En gros, j'ai :

    SerialNum BoardCode ProgCode Composant Erreur

    1234 B003256 1 D2 Erreur differente

    1234 B003256 2 D3 Erreur differente1

    1235 B003258 1 D2 Erreur differente2

    1236 B003257 1 D4 Erreur differente 3

    Je veux que le progCode s'incrémente quand on est dans le meme serialnum / Boardcode mais a chaque composant différents. Le compteur doit se réinitialisé dès qu'on change de serialNum.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    postez un jeu d'essai plus complet, et le résultat attendu, ce sera bien plus parlant...

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 101
    Points : 187
    Points
    187
    Par défaut
    il me semble que c'est cela que vous attendez : (SerialNum / BoardCode)

    sum(1) OVER(PARTITION BY SerialNum, BoardCode ORDER BY Composant ) AS Row_Number

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 62
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    postez un jeu d'essai plus complet, et le résultat attendu, ce sera bien plus parlant...
    J'ai pas mieux que le schéma du deuxième message :/

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 62
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par LapinClair Voir le message
    il me semble que c'est cela que vous attendez : (SerialNum / BoardCode)

    sum(1) OVER(PARTITION BY SerialNum, BoardCode ORDER BY Composant ) AS Row_Number
    LapinClair, ca semble être ce que je cherche ! Je vais vérifier ! Mais je ne comprends pas pourquoi "sum"? je ne cherche pas a avoir de somme .

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 101
    Points : 187
    Points
    187
    Par défaut
    Sum(1) employé ici, permet un incrément par pas de 1 pour chacune des lignes répondant aux critères. On pourrait également utiliser la fonction ROW_NUMBER() qui aurait les mêmes effets.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 62
    Points : 24
    Points
    24
    Par défaut
    D'accord, je vois. Merci ! Je vais tester ca !

  10. #10
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par LapinClair Voir le message
    On pourrait également utiliser la fonction ROW_NUMBER() qui aurait les mêmes effets.

    En efet, elle serait sans doute plus appropriée. Je ne sais pas pourquoi je suis parti sur le SUM.

    ROW_NUMBER aura toutefois un comportement différent en cas d'égalité dans l'ordre spécifié, mais qui sera a priori celui qu'attend Ecxtazy.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 62
    Points : 24
    Points
    24
    Par défaut
    Je viens de tester ROW_NUMBER et SUM(1) et effectivement ROW_Number retourne le code que j'attends ligne par ligne. Merci beaucoup de votre aide ! Je suppose que je peux me servir de cette ligne de code dans un select lui-même dans un insert pour insérer les données dans une colonnes non ?

  12. #12
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Points : 1 668
    Points
    1 668
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Ecxtazy Voir le message
    JeJe suppose que je peux me servir de cette ligne de code dans un select lui-même dans un insert pour insérer les données dans une colonnes non ?
    Oui tout à fait.

    Vous pouvez par exemple utiliser la syntaxe telle que ci-après. Cette syntaxe impose que la table mentionnée après le INTO ... doive préalablement exister.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO ... SELECT .... FROM ....
    Si vous voulez créer à la volée une nouvelle table, vous pouvez opter pour la syntaxe suivante. Avec cette syntaxe, la table mentionnée après le INTO sera créée automatiquement. Sa structure sera définie à partir des attributs des expressions de la clause SELECT
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT .... INTO ... FROM ....
    A+
    "Une idée mal écrite est une idée fausse !"
    http://hamid-mira.blogspot.com

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 62
    Points : 24
    Points
    24
    Par défaut
    Super merci je mets en résolue !

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

Discussions similaires

  1. Requête INSERT avec compteur incrémental (sans curseur)
    Par FMJ dans le forum Développement
    Réponses: 10
    Dernier message: 04/01/2014, 12h03
  2. Réponses: 14
    Dernier message: 08/08/2006, 11h31
  3. [LDAP] Problème lors d'insertion de valeur vide
    Par navis84 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/04/2006, 14h26
  4. Ralentissement lors d'INSERT successifs dans IB 6
    Par Papino dans le forum Débuter
    Réponses: 9
    Dernier message: 21/01/2005, 13h29
  5. [Postgresql] pb lors d'insertion de données
    Par bob20000 dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/11/2002, 15h33

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