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

Langage SQL Discussion :

Code SQL : regrouper des transactions


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    comptable
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Code SQL : regrouper des transactions
    Bonjour,

    Je suis pris dans un traquenard !

    Étant le Monsieur Excel-VBA de mon organisation, on m'a demandé de modifier une requête SQL (sauf que je ne connais absolument pas SQL).
    Me voilà perdu.

    En fait la requête me groupe et me somme des montants par catégorie.
    J'aimerais juste avoir toute les transactions (non sommé, non groupé)

    voilà le code :

    Code SQL : 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
    18
    select case
    when a.accounttype='Retar' then 'Pénalité de retard'
    when a.accounttype='Abt' then 'Abonnement'
    when a.accounttype='Dette' then 'Dette maximale'
    when a.accounttype='Perdu' then 'Document perdu'
    when a.accounttype='Lreco' then 'Lettre recommandée'
    when a.accounttype='Badge' then 'Perte badge'
    when a.accounttype='w' then 'Perte et profit'
    else 'null'
    end as type
    ,a.date,b2.surname,b2.firstname,b2.cardnumber
    ,a.note,  substring_index(convert(sum(a.amount),DECIMAL(8,2)),'-',-1) as montant from borrowers b, borrowers b2, accountlines a where b.borrowernumber=a.manager_id  /*and a.amount like '-%'*/ and b.branchcode=<<Site|branches>> and a.note not like '%SANSOBJET%'
    and
    a.accounttype in ('Retar','Abt','Dette','Perdu' ,'Lreco','Badge')
    and a.date >=<<date sup. égale à |date>> and a.date <=<<date inf. égale à|date>>
    and
    b2.borrowernumber=a.borrowernumber
    group by a.date,type,b2.surname,b2.firstname,b2.cardnumber,a.note


    je pensais simplement qu'il fallait enlever le « sum » mais bien entendu ce serait trop facile.

    Toute aide serait enormement appréciée !

    D'avance merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 378
    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 378
    Points : 39 860
    Points
    39 860
    Billets dans le blog
    9
    Par défaut
    Si vous voulez toutes les lignes, il faut aussi enlever le "group by".
    Cela étant, il faudra certainement ajouter les colonnes qui vous permettent de distinguer les différentes lignes

    De plus les jointures sont très mal écrites, mais comme vous ne connaissez pas SQL, je fermerai les yeux

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 408
    Points : 23 800
    Points
    23 800
    Par défaut
    Bonjour,

    Citation Envoyé par BLACKEYED05 Voir le message
    En fait la requête me groupe et me somme des montants par catégorie.
    J'aimerais juste avoir toute les transactions (non sommé, non groupé)

    je pensais simplement qu'il fallait enlever le « sum » mais bien entendu ce serait trop facile.
    Ben, tu n'étais pas très loin de la vérité. A priori, il faut enlever la fonction d'agrégation sum (« ça ne sert jamais à rien d'avoir le seum », →[]) et la clause GROUP BY en fin de requête. Tu auras peut-être besoin d'ajouter DISTINCT après SELECT.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    comptable
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    j'ai tenté ça mais j'ai une erreur de syntaxe :


    Code SQL : 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
    select distinct case
    when a.accounttype='Retar' then 'Pénalité de retard'
    when a.accounttype='Abt' then 'Abonnement'
    when a.accounttype='Dette' then 'Dette maximale'
    when a.accounttype='Perdu' then 'Document perdu'
    when a.accounttype='Lreco' then 'Lettre recommandée'
    when a.accounttype='Badge' then 'Perte badge'
    when a.accounttype='w' then 'Perte et profit'
    else 'null'
    end as type
    ,a.date,b2.surname,b2.firstname,b2.cardnumber
    ,a.note,  substring_index(convert(a.amount),DECIMAL(8,2),'-',-1) as montant from borrowers b, borrowers b2, accountlines a where b.borrowernumber=a.manager_id  /*and a.amount like '-%'*/ and b.branchcode=<<Site|branches>> and a.note not like '%SANSOBJET%'
    and
    a.accounttype in ('Retar','Abt','Dette','Perdu' ,'Lreco','Badge')
    and a.date >=<<date sup. égale à |date>> and a.date <=<<date inf. égale à|date>>
    and
    b2.borrowernumber=a.borrowernumber

    (a noter que je ne comprends absolument pas ce que je fais, mais promis j'étudierai le truc ....)

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 408
    Points : 23 800
    Points
    23 800
    Par défaut
    À la ligne

    Citation Envoyé par BLACKEYED05 Voir le message

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    …
    ,a.note, substring_index(convert(a.amount),DECIMAL(8,2),'-',-1) as montant from borrowers b, borrowers b2, accountlines a where b.borrowernumber=a.manager_id  /*and a.amount like '-%'*/ and
    …
    Il faut remplacer toute la déclaration « substring_index(convert(a.amount),DECIMAL(8,2),'-',-1) as montant » par « a.amount as montant ». ;-)

    Et si tu veux te mettre au SQL :
    http://sqlpro.developpez.com/
    http://sql.developpez.com/

  6. #6
    Futur Membre du Club
    Homme Profil pro
    comptable
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    À la ligne



    Il faut remplacer toute la déclaration « substring_index(convert(a.amount),DECIMAL(8,2),'-',-1) as montant » par « a.amount as montant ». ;-)

    Et si tu veux te mettre au SQL :
    http://sqlpro.developpez.com/
    http://sql.developpez.com/

    ça a l'air de marcher !
    merci beaucoup à tous !

    super le livre en lien, je vais tenter de me procurer ça !

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 408
    Points : 23 800
    Points
    23 800
    Par défaut
    Citation Envoyé par BLACKEYED05 Voir le message
    ça a l'air de marcher ! merci beaucoup à tous !
    super le livre en lien, je vais tenter de me procurer ça !
    Heureux que ça fonctionne !
    C'est une bonne idée de se procurer le livre, mais ces liens pointent surtout de très riches tutoriels, accessibles librement en ligne.

    Dans le lien de SQLPro, essaie le chapitre intitulé « Le simple SELECT » (c'est le premier ou le deuxième). À lui seul, il devrait déjà couvrir 90% de tes besoins en entreprise.

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

Discussions similaires

  1. [Mon premier code SQL] Multiples INNER JOIN's
    Par Paulinho dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/11/2005, 10h04
  2. Création BD Access Code SQL pour relation 1-1 ?
    Par colorid dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/10/2005, 17h42
  3. Réponses: 7
    Dernier message: 12/09/2005, 12h05
  4. [IB6] Code SQL.
    Par qi130 dans le forum SQL
    Réponses: 1
    Dernier message: 21/02/2005, 13h21
  5. Récupérer le code SQL à partir d'une requête
    Par Edith_T dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 23/11/2004, 15h10

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