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

SQL Oracle Discussion :

Personnaliser le Total_général en utilisant GROUP BY ROLLUP


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 27
    Points : 13
    Points
    13
    Par défaut Personnaliser le Total_général en utilisant GROUP BY ROLLUP
    Bonjour à tous,

    Grâce aux fonctions GROUPING, ROLLUP, CUBE , oracle donne la possibilité d'établir des rapports de tableaux croisés simples,
    mais une question se pose, est-ce possible de personnaliser par exemple le Total_Général (voir img).
    Nom : capt1.png
Affichages : 567
Taille : 15,6 Ko

    Exemple,on veut que DEPTNO=30 est exclus du Total_general ie (29025 - 9400)= 19625.

    mais comment faire?
    merci de votre aide

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Votre question est ambiguë: vous voulez que la ligne du total du service 30 ne soit plus affichée ou vous voulez lé total général mais sans les données du service 30 ? Et dans ce dernière cas les données concernant le service 30 seront toujours affichées ?

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    ok , le total du service 30 doit toujours être affichée mais on veut que le total général soit sans les données du service 30.

    merci

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par tytous Voir le message
    ok , le total du service 30 doit toujours être affichée mais on veut que le total général soit sans les données du service 30.

    merci
    J'appellerais cela un bug!

    Bref faite le Rollup sans le service 30 et ajouter via un Union ALL le group by du service 30.

  5. #5
    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

    Citation Envoyé par mnitu Voir le message
    J'appellerais cela un bug!
    Ou des pots de vin qu'il faut dissimuler

    Une alternative est d'ajouter une colonne supplémentaire faisant la somme conditionnelle.
    Au besoin mettez le tout dans une sous requête pour obtenir le résultat voulu...
    Mais comme mnitu, je suis sceptique sur l’interprétation qui pourra être faite des résultats d'une telle requête

    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
     
    WITH CTE(deptno, job, Nb, Somme, SommeSansPotDeVin) AS (
    	SELECT	
    			deptno
    		,	job
    		,	COUNT(*) 
    		,	SUM(sal) 
    		,	SUM(CASE WHEN deptno <> 30 THEN sal ELSE 0 END) 
    	FROM	gross
    	GROUP BY ROLLUP(deptno, job)
    )
    SELECT 	
    		deptno
    	,	job
    	,	Nb
    	,	CASE WHEN deptno IS NULL THEN SommeSansPotDeVin ELSE Somme END AS Total
    FROM CTE

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    Merci aiee,

    je pense que c'est la bonne

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/11/2010, 17h31
  2. GROUP BY ROLLUP
    Par DeveloppeurWeb dans le forum SQL
    Réponses: 5
    Dernier message: 31/08/2010, 16h16
  3. utilisation group by
    Par traersa dans le forum SAS Base
    Réponses: 4
    Dernier message: 20/07/2010, 09h37
  4. Utilisation de "WITH ROLLUP"
    Par darthmower dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/10/2009, 09h28
  5. aide pour utilisation group by
    Par rlnd23 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/10/2006, 00h54

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