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 :

CASE WHEN / compter plusieurs fois les même valeurs ?


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Par défaut CASE WHEN / compter plusieurs fois les même valeurs ?
    Bonjour à tous,

    J'espère que je me trouve au bon endroit pour poster ce message.

    J'essaye de créer un filtre, et voici mon problème : disons que d'un côté, nous avons une colonne A avec deux valeurs possibles : a et b. De l'autre côté, une colonne X avec comme valeurs possibles x et y.

    J'aurais besoin d'une formule basée sur différents ensembles. J'ai écrit une formule du genre :

    CASE WHEN A=’a’ THEN ‘a’ WHEN A=’b’ THEN ‘b’, WHEN A IN (‘a’, ‘b’) AND X=’x’ THEN ‘x’ WHEN A IN (‘a’, ‘b’) AND X<>’x’ THEN ‘y’ ELSE ‘’ END.

    Le problème que je rencontre est que les seules résultats proposés sont a et b, je ne retrouve pas x et y. J'imagine que le filtre ne compte qu'une fois les données, donc tout est assimilé sous a ou b...

    Comment pourrais-je obtenir ce dont j'ai besoin ?

    Je vous remercie !!

  2. #2
    Expert confirmé 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
    Par défaut
    C'est normal, des qu'un test est vrai l'évaluation des autres tests ne se fait plus. Et ça montre aussi un petit souci avec votre algorithme: dans quel cas le résultat devrait être disons 'a' et dans quel autre il devrait être 'x' ?

  3. #3
    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
    Par défaut
    Bonjour,

    En effet, un CASE renvoie ce qui est spécifié dans le THEN pour le premier WHEN qui est vrai.

    Mais... que voulez-vous faire exactement ?

    Pouvez vous poster un jeu d'essai avec le résultat voulu ?

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Par défaut
    Bonjour à tous les deux, et merci pour vos réponses.

    Plus concrètement, ma recherche a pour objet les opportunités.

    J'ai une colonne Phase de vente, avec pour valeurs Perdu ou En cours.
    J'ai une autre colonne, intitulée Type d'affaire, avec comme valeurs Nouveau ou Addition.

    Je voudrais pouvoir filtrer ainsi :
    - Toutes les opportunités de type Nouveau, toutes phases de ventes confondues (sous l'intitulé "Nouveau")
    - Toutes les opportunités de type Addition, toutes phases de ventes confondues (sous l'intitulé "Addition")
    - Toutes les opportunités, de tous types et de toutes phases (sous l'intitulé "Total")
    - Toutes les opportunités, de tous types, dont la phase de vente est "Perdu" (sous l'intitulé "Perdu")
    - Toutes les opportunités, de tous types, dont la phase de vente est "En cours" (sous l'intitulé "Net")

    L'objectif est ensuite une mise en forme sous tableau pivot, pour mettre en place un reporting.

    J'ai également essayé avec les combinaisons, sans succès...

    Merci pour vos suggestions !!

  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
    Par défaut
    Citation Envoyé par Gotlayeh Voir le message
    J'ai une colonne Phase de vente, avec pour valeurs Perdu ou En cours.
    Va falloir songer à motiver vos commerciaux

    Citation Envoyé par Gotlayeh Voir le message
    Je voudrais pouvoir filtrer ainsi :
    - Toutes les opportunités de type Nouveau, toutes phases de ventes confondues (sous l'intitulé "Nouveau")
    - Toutes les opportunités de type Addition, toutes phases de ventes confondues (sous l'intitulé "Addition")
    - Toutes les opportunités, de tous types et de toutes phases (sous l'intitulé "Total")
    - Toutes les opportunités, de tous types, dont la phase de vente est "Perdu" (sous l'intitulé "Perdu")
    - Toutes les opportunités, de tous types, dont la phase de vente est "En cours" (sous l'intitulé "Net")
    alors il vous faut plusieurs CASE, un par colonne du résultat (ceci explique sans doute la virgule qui semblait trainer dans votre bout de requete initial).

    Mais je pense qu'il serait préférable de faire simplement un GROUP BY CUBE(PhaseDeVente, TypeAffaire)

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Par défaut
    Va falloir songer à motiver vos commerciaux
    Hé hé, on y songe...

    Etant donné que je débute très clairement, je n'ai pas la moindre idée de comment écrire la fonction GROUP BY CUBE(PhaseDeVente, TypeAffaire)...

    Je préférerai donc peut-être l'option du CASE WHEN, il n'y a donc pas de moyen de faire un seul filtre au sein d'une colonne, mais plusieurs colonnes avec un filtre différents à chaque fois ?

    Merci encore pour le coup de main !

  7. #7
    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
    Par défaut
    J'ai toujours du mal à comprendre ce que vous voulez comme résultat, et surtout sous quelle forme.

    Un petit exemple serait le bienvenu !

  8. #8
    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
    Par défaut
    Je confirme que CUBE pourrait répondre assez simplement à votre besoin

    Citation Envoyé par Gotlayeh Voir le message
    Etant donné que je débute très clairement, je n'ai pas la moindre idée de comment écrire la fonction GROUP BY CUBE(PhaseDeVente, TypeAffaire)...
    En fait, il s’écrit comme je l'ai indiqué, vous n'avez qu'a mettre les bons noms de colonne...

    Vous devriez tout de même y jeter un œil, en commençant sur un cas simple pour en comprendre le fonctionnement.

    Tel qu’écrit au dessus, en plus d'une ligne pour chaque couple (PhaseDeVente, TypeAffaire), vous aurez une ligne supplémentaire par PhaseDeVente, avec TypeAffaire à NULL (tous types d'affaires confondus)
    Vous aurez les mêmes groupements additionnels pour chaque type d'affaire (toutes phases de vente confondues)
    Enfin, vous aurez le groupe général (toutes phases de ventes et tous types d'affaires)

    Bref, exactement ce que vous voulez. Un peu plus même, mais il suffit de filtrer ensuite...

    Mais rassurez-vous : comme vous avez une colonne faisant la somme pour un mois donné, et une autre colonne faisant la somme pour l'année en cours, vous aurez tout de même l'occasion d'utiliser le CASE WHEN pour cette somme conditionnelle

Discussions similaires

  1. Compter cellules avec les mêmes valeurs et les cumulers aux final
    Par navta12 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/07/2013, 03h04
  2. Réponses: 10
    Dernier message: 01/09/2011, 15h34
  3. Insérer plusieurs fois la même valeur
    Par chalmou dans le forum SQL
    Réponses: 9
    Dernier message: 15/04/2010, 12h30
  4. Réponses: 4
    Dernier message: 29/01/2009, 14h44
  5. SELECT plusieurs fois les mêmes champs
    Par aergil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/02/2005, 12h10

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