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 :

Opération pivot SQL [2005]


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    unix
    Inscrit en
    Septembre 2016
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : unix
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 83
    Points : 58
    Points
    58
    Par défaut Opération pivot SQL
    Bonjour
    je suis entrain de créé un rapport journalier du production qui calcul la quantité des produits passer sur une machine ,les différent produits dernier peuvent avoir commet résultat final un statut GO ou NOGO
    ci joint la requête que j'ai utilisée pour calculer la quantité des produits passer avec un statut soit GO ou NOGO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  mt_test,mt_statut,count(ni_num)  as somme
      FROM [prod].[dbo].[mvtTest]
      where mt_dmvt>dateadd(day,-1,getdate())
      group by mt_test,mt_statut
      order by mt_test desc
    maintenant je veux utiliser la function pivot pour mettre les deux statut GO et NOGO comme colonne pour chaque produit (voir imprime écran) pour cela j'ai penser a cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ;WITH Cte_Pvt AS (
    SELECT  mt_test,ni_num AS  mt_test_Y,ni_num
      FROM [prod].[dbo].[mvtTest] where mt_dmvt>dateadd(day,-1,getdate()))
     
    SELECT *
      FROM Cte_Pvt rq
           PIVOT ( count(ni_num)  FOR mt_test_Y IN( [GO], [NOGO] ) )  AS nbre;
    le problème que ma requête m'affiche que des Zéro sur la partie quantité
    Qui a une idée d'ou viens le problème dans cette requête
    merci pour vos aides
    Images attachées Images attachées  

  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,

    Vous pouvez faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT  mt_test,mt_statut
        ,    SUM(CASE WHEN mt_statut = 'GO' THEN 1 ELSE 0 END) AS NbGo
        ,   SUM(CASE WHEN mt_statut = 'NOGO' THEN 1 ELSE 0 END) AS NbNOGo
      FROM [prod].[dbo].[mvtTest]
      where mt_dmvt>dateadd(day,-1,getdate())
      group by mt_test
      order by mt_test desc

  3. #3
    Membre du Club
    Homme Profil pro
    unix
    Inscrit en
    Septembre 2016
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : unix
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 83
    Points : 58
    Points
    58
    Par défaut
    oui
    c'est exacte , votre réponsse il répond bien a ma demande

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 760
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Sinon, pour reprendre la syntaxe avec le pivot, vous pouvez faire :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    WITH(SELECT  mt_test,mt_statut,count(ni_num)  as somme
      FROM [prod].[dbo].[mvtTest]
      where mt_dmvt>dateadd(day,-1,getdate())
      group by mt_test,mt_statut) AS Cte_Pvt
    SELECT P.mt_test, P.[GO], P.[NOGO] FROM Cte_Pvt
    PIVOT(SUM(somme) FOR mt_status IN([GO], [NOGO])) AS P

    Mais la solution fournie par aieeeuuuuu fonctionne très bien aussi (et je la trouve même plus lisible). C'est juste pour donner la méthode à base de pivot.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

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

Discussions similaires

  1. Opération requete SQL
    Par painbaguette dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/12/2015, 16h59
  2. Réponses: 1
    Dernier message: 23/07/2015, 10h28
  3. [SP 2010]Power Pivot / SQL Server 2008 r2
    Par James Dt dans le forum Installation
    Réponses: 0
    Dernier message: 18/09/2012, 15h59
  4. Cubes et opération Pivot, Drill Across et Drill trought
    Par Alvaten dans le forum Approche théorique du décisionnel
    Réponses: 6
    Dernier message: 06/12/2011, 16h14
  5. Prise en charge PIVOT sql 2005 Express
    Par cbleas dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 14/09/2007, 10h53

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