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

Requêtes MySQL Discussion :

Fonction Select case when


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Femme Profil pro
    Controle de gestion
    Inscrit en
    Novembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Controle de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Fonction Select case when
    Bonjour,

    Je souhaiterais ramener dans une colonne une fonction avec plusieurs variable.
    A partir d'une table d'origine qui comprend des écritures par compte sur des dates différentes.

    Je voudrais récuperer dans une autre table, une colonne avec le compte comptable et dans une autre colonne, je voudrais faire la chose suivante:

    - Si le compte comptable >=6% alors ramener la somme du compte entre la date A et la date B
    - Si le compte comptable <6% alors ramener la somme de tous les écritures quand date <=B

    Il me semble avoir déjà utilisé un select case when.....from
    j'ai bien essayé cette formule mais malheureusement pour les comptes >=6% elle me ramène plusieurs lignes (j'imagine qu'elle fait la somme de chaque écriture!).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT     
          A.[G_L Account No_]
          ,case when  A.[G_L Account No_]<'6%' and  A.[Posting Date]<='12-31-2018' then -sum(A.[Credit Amount]-A.[Debit Amount])  
     
            when  A.[G_L Account No_]>'6%' and  A.[Posting Date]<='12-31-2018' and A.[Posting Date]>='10-01-2018' then -sum(A.[Credit Amount]-A.[Debit Amount])
         end
          FROM [XXXXX].[dbo].[XXXXXXXX$G_L Entry] A
    Quelqu'un aurait-il une idée pour que seul le solde sur la période soit repris sur les comptes >=6%?

    Merci par avance,

    chlolo5

  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,
    Visiblement le "pourcentage" est dans une colonne de type chaine, donc attention, '10%' est inférieur à '6%'...
    Ensuite je vois des sum, mais pas de GROUP BY, donc la requête est incorrecte. Elle serait d'ailleurs rejetée par n'importe quel SGBD (sauf MySQL visiblement).

    Tatayo.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Vous avez oublié de gérer le cas ou le % est strictement égal à 6%

    Et au passage, allez féliciter le concepteur de la base qui a choisi des noms de colonne à la @#*¤ obligeant à faire de la gymnastique dans les requête et rendant celles-ci difficilement portables !

  4. #4
    Membre à l'essai
    Femme Profil pro
    Controle de gestion
    Inscrit en
    Novembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Controle de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Bonjour et merci pour votre aide.

    En fait dans mon cas, le % ne veut pas dire pourcentage mais signifie en gros les commencant par 6 (quelque soit le chiffre derrière).

    Pour ce qui est du group by, il est bien dans ma requete (juste pas copié ici) car la requete fonctionne mais ne donne pas une ligne de somme pas numéro de compte.

    Chlolo5

  5. #5
    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
    Citation Envoyé par chlolo5 Voir le message
    Bonjour et merci pour votre aide.
    En fait dans mon cas, le % ne veut pas dire pourcentage mais signifie en gros les commencant par 6 (quelque soit le chiffre derrière).
    Je en comprends pas ce que tu cherches… Que signifie alors pour toi "Macolonne < '6%'" ? Tu veux ce qui commence par 6, qui est inférieur à 6 ? Et quel est le type de données de cette colonne ? Si c'est un entier, un LIKE ne fonctionnera pas, si c'est une chaine 10 est inférieur à 6...
    Citation Envoyé par chlolo5 Voir le message
    Pour ce qui est du group by, il est bien dans ma requete (juste pas copié ici) car la requete fonctionne mais ne donne pas une ligne de somme pas numéro de compte.
    Dans ce cas il faut nous montrer la requête entière.

    L'idéal serait d'y ajouter un jeu de test, et le résultat attendu.

    Tatayo.

Discussions similaires

  1. SELECT CASE WHEN BETWEEN ?
    Par H.ile dans le forum SQL
    Réponses: 4
    Dernier message: 14/09/2010, 18h13
  2. pb SELECT CASE WHEN
    Par bb5477 dans le forum SQL
    Réponses: 2
    Dernier message: 18/12/2007, 17h16
  3. Access et SELECT CASE WHEN dans requetes
    Par Orion01 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/12/2007, 11h24
  4. Réponses: 7
    Dernier message: 29/05/2007, 10h21
  5. Equivalent "Select Case when then else end" sur Paradoxe
    Par Seuh.m dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/06/2006, 08h23

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