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 une colonne indiquant le nb de ligne ayant le même n° de facture [2016]


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut Rajouter une colonne indiquant le nb de ligne ayant le même n° de facture
    Bonjour,

    Je ne sais pas coder en SQL et en regardant ma VUE dans mes tables de SQL, j'ai identifié pourquoi mes résultats n'étaient pas conformes.
    Afin de remédier à ce problème, il faut que je réussisse à indiquer dans une colonne le n° de ligne qui ont le même n°

    Clairement dans ma base si je filtre sur le code_client X avec la date Y alors j'obtiens 7 enregistrements car dans cette exemple cela me donne les 7 lignes de la facture du client X à la date Y.
    Je voudrais qu'une colonne puisse m'indiquer 7 sur chacune des 7 lignes.

    Est ce que quelqu'un peut m'aider ?

    Merci

    Liop

    PS : je suis sur SQL Server Management Studio V18.1

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Pour pouvoir t'aider il nous faut la description des tables concernées, un jeu de test, le résultat voulu, et pourquoi pas les requêtes que tu as déjà essayées.

    Tatayo.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Voici ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT        MOUV_ID, REF AS REFERENCE, TIERS, FANO AS NUMERO, FADT AS DATEFACTURE, DES AS DESIGNATION, ENRNO AS ENREGNO, VENUN AS UNITEVENTE, USERCRDH AS DATECREATION
    FROM            dbo.MOUV
    WHERE        (TICOD = 'C') AND (PICOD = '4') AND (CE2 = 1) AND (FANO = 40000388)
    Cela me donne en résultat 4 lignes :
    Nom : Capture.JPG
Affichages : 141
Taille : 48,3 Ko

    Le résultat est logique car il y a 4 lignes de produits dans la facture 40000388
    Je souhaiterai avoir en résultat :
    Nom : Capture2.JPG
Affichages : 131
Taille : 50,5 Ko


    J'utilise beaucoup le volet de critères qui est plus simple pour moi, et j'ai essayé de mettre une formule comme select count FANO mais je n'y arrive pas ...
    Voici ma fenêtre actuelle
    Nom : Capture3.JPG
Affichages : 156
Taille : 38,9 Ko
    Désolé de ne pas pouvoir faire mieux
    Mais merci pour l'aide

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Tu peux peut-être utiliser une fonction de fenêtrage.
    Ca donnerai un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT        MOUV_ID, REF AS REFERENCE, TIERS, FANO AS NUMERO, FADT AS DATEFACTURE, DES AS DESIGNATION, ENRNO AS ENREGNO, VENUN AS UNITEVENTE, USERCRDH AS DATECREATION,
    count(NUMERO) over (partition by NUMERO)
    FROM            dbo.MOUV
    WHERE        (TICOD = 'C') AND (PICOD = '4') AND (CE2 = 1) AND (FANO = 40000388)
    Honnêtement je ne suis pas sûr de la syntaxe, je ne maitrise pas vraiment les fonctions de fenêtrage.

    Tatayo.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Bonjour et Merci Tatayo

    La syntaxe est en erreur.
    J'ai pensé à faire une autre vue de ma base où je pourrais avoir le nombre de lignes ayant le même n°. J'ai fait le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT        FANO, COUNT(MOUV_ID) AS Expr2
    FROM            dbo.MOUV
    GROUP BY FANO
    Le problème c'est qu'il m'affiche bien le nombre de lignes mais je n'ai pas le n° correspondant.
    Nom : Capture4.PNG
Affichages : 113
Taille : 4,1 Ko
    Il me faudra le n° FANO également ainsi je pourrai croiser cette vue avec mon autre vue et demander à afficher Expr2

    Merci pour votre aide.

    Liop

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Quand tu dis que la requête "est en erreur", ça ne suffit pas pour avoir de l'aide. Il faudrait aussi donner le message d'erreur

    En relisant la requête je vois que j'ai oublié le GROUP BY:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT        MOUV_ID, REF AS REFERENCE, TIERS, FANO AS NUMERO, FADT AS DATEFACTURE, DES AS DESIGNATION, ENRNO AS ENREGNO, VENUN AS UNITEVENTE, USERCRDH AS DATECREATION,
    count(NUMERO) over (partition by NUMERO)
    FROM            dbo.MOUV
    WHERE        (TICOD = 'C') AND (PICOD = '4') AND (CE2 = 1) AND (FANO = 40000388)
    group by MOUV_ID, REF AS REFERENCE, TIERS, FANO AS NUMERO, FADT AS DATEFACTURE, DES AS DESIGNATION, ENRNO AS ENREGNO, VENUN AS UNITEVENTE, USERCRDH AS DATECREATION
    Mais comme je le disais, je ne maîtrise pas vraiment les fonctions de fenêtrage.

    Tatayo.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    j'ai réussi en créant une vue annexe qui me donne le nb de ligne par FANO.
    J'ai ensuite croisé les deux vue.

    Merci pour ton aide car cela m'a permis de me challenger

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/07/2010, 12h12
  2. Réponses: 1
    Dernier message: 28/10/2009, 15h44
  3. [PMD] [Maven] Rajouter une colonne dans un rapport PMD
    Par Frederik dans le forum Qualimétrie
    Réponses: 2
    Dernier message: 02/10/2007, 14h42
  4. Rajouter une colonne dans une datagrid
    Par bejaad dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/08/2007, 10h32
  5. Rajouter une colonne dans un select *
    Par phb07 dans le forum Oracle
    Réponses: 5
    Dernier message: 30/03/2007, 12h51

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