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

SSRS Discussion :

Graphique Top 5 + autres [2008R2]


Sujet :

SSRS

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2006
    Messages : 58
    Points : 57
    Points
    57
    Par défaut Graphique Top 5 + autres
    Bonjour tout le monde

    Je dois faire un graphique secteur, un bon vieux camembert, avec un top 5 des clients (nb de demandes le plus élevés) et un 6ème secteur qui est la somme des autres, que nous appellerons donc... autres
    Mon dataset est simple, il n'a qu'un count des demandes et nom du client
    Je bloque bêtement je pense.

    A+

  2. #2
    Membre régulier
    Homme Profil pro
    Chef de projet BI
    Inscrit en
    Août 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de projet BI

    Informations forums :
    Inscription : Août 2013
    Messages : 42
    Points : 82
    Points
    82
    Par défaut
    Bonjour luatwork,

    Il existe une propriété du graphique qui permet de regrouper les petites valeurs.
    Comme tu peux le voir ici, il est possible de regrouper à partir d'une certaine valeur ou d'un certain pourcentage.

    Dans le cas présent, il s'agit de regrouper à partir d'un certain rang...
    À mon avis, il te faut passer par la fonction SQL Server ROW_NUMBER().

    Par exemple, avec le jeu de données suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @TABLE TABLE (CLIENT CHAR(1), COUNT INT)
     
    INSERT INTO @TABLE (CLIENT, COUNT) 
    VALUES ('A', 100), ('B', 110), ('C', 10), ('D', 90), ('E', 120), ('F', 105), ('G', 50), ('H', 70), ('G', 95)

    Cette requête permet de construire le regroupement à mettre en tant que catégorie dans SSRS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT  CLIENT,
            COUNT,
            CASE 
               WHEN ROW_NUMBER() OVER(ORDER BY COUNT DESC) <= 5
               THEN CLIENT
               ELSE 'Autres'
            END AS REGROUPEMENT
    FROM    @TABLE

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2006
    Messages : 58
    Points : 57
    Points
    57
    Par défaut
    Bonjour Jonathan

    J'avais bien vu cette propriété sur les graphiques, mais ça ne répondait effectivement pas à mon besoin.
    Merci pour la piste ROW_NUMBER.
    J'ai testé rapidement, j'obtiens un message d'erreur "La construction ou l'instruction SQL OVER n'est pas prise en charge"

    Je me remets dessus lundi.
    Bon weekend

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2006
    Messages : 58
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par III Jonathan III Voir le message
    Bonjour luatwork,

    Il existe une propriété du graphique qui permet de regrouper les petites valeurs.
    Comme tu peux le voir ici, il est possible de regrouper à partir d'une certaine valeur ou d'un certain pourcentage.

    Dans le cas présent, il s'agit de regrouper à partir d'un certain rang...
    À mon avis, il te faut passer par la fonction SQL Server ROW_NUMBER().

    Par exemple, avec le jeu de données suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @TABLE TABLE (CLIENT CHAR(1), COUNT INT)
     
    INSERT INTO @TABLE (CLIENT, COUNT) 
    VALUES ('A', 100), ('B', 110), ('C', 10), ('D', 90), ('E', 120), ('F', 105), ('G', 50), ('H', 70), ('G', 95)

    Cette requête permet de construire le regroupement à mettre en tant que catégorie dans SSRS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT  CLIENT,
            COUNT,
            CASE 
               WHEN ROW_NUMBER() OVER(ORDER BY COUNT DESC) <= 5
               THEN CLIENT
               ELSE 'Autres'
            END AS REGROUPEMENT
    FROM    @TABLE
    Un ENORME merci Jonathan : je me suis repenché à tête reposée sur ta solution, et j'ai réussi à l'adapter.
    Bêtement, je ne mettais pas la requête au bon endroit : requête en mode texte, et ça marche impeccable !

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

Discussions similaires

  1. [Débutant] Mise à jour graphique dans une autre figure que la principale
    Par Luis Vieira da Silva dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 26/06/2009, 12h04
  2. Graphiques Complexes Jfreechart, autres
    Par new.proger dans le forum Graphisme
    Réponses: 0
    Dernier message: 19/11/2008, 15h10
  3. créer un graphique dans un autre classeur
    Par n'anneso dans le forum Excel
    Réponses: 2
    Dernier message: 06/02/2008, 09h54
  4. créer un synonyme graphique dans un autre diagramme
    Par farenheiit dans le forum PowerAMC
    Réponses: 2
    Dernier message: 01/08/2007, 09h48

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