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

Développement SQL Server Discussion :

requete sql


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 150
    Par défaut requete sql
    bonjour ,
    je suis bloqué sur une requete sql

    voila ma requete
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT dbo.etat_engagement.montant_engager,
    SUM(dbo.modification_engager.montant) AS som_modification, dbo.etat_engagement.n_nature_engagement
    FROM  dbo.etat_engagement LEFT OUTER JOIN dbo.modification_engager ON dbo.etat_engagement.id2 = dbo.modification_engager.id2
    WHERE   (dbo.etat_engagement.id1 = 2)
    GROUP BY dbo.etat_engagement.montant_engager, dbo.etat_engagement.n_nature_engagement

    bon la requete marche bien , mais j'aimerai appliqué un critère where applicable uniquement sur le champs sum(dbo.modification_engager.montant)
    mais je sais pas comment faire

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Faites une recherche du côté de la clause HAVING.

  3. #3
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    SELECT dbo.etat_engagement.montant_engager,
    SUM(dbo.modification_engager.montant) AS som_modification, dbo.etat_engagement.n_nature_engagement
    FROM dbo.etat_engagement LEFT OUTER JOIN dbo.modification_engager ON dbo.etat_engagement.id2 = dbo.modification_engager.id2
    WHERE (dbo.etat_engagement.id1 = 2)
    GROUP BY dbo.etat_engagement.montant_engager, dbo.etat_engagement.n_nature_engagement
    Clause HAVING...

    ou aussi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SEELCT * FROM
    (SELECT dbo.etat_engagement.montant_engager,
    SUM(dbo.modification_engager.montant) AS som_modification, dbo.etat_engagement.n_nature_engagement
    FROM  dbo.etat_engagement LEFT OUTER JOIN dbo.modification_engager ON dbo.etat_engagement.id2 = dbo.modification_engager.id2
    WHERE   (dbo.etat_engagement.id1 = 2)
    GROUP BY dbo.etat_engagement.montant_engager, dbo.etat_engagement.n_nature_engagement) as T
    WHERE som_modification>2

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 150
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Faites une recherche du côté de la clause HAVING.
    merci pour votre réponse mais j'ai pas trop compris si tu peut m'aidé ca sera sympa
    donc ce que j'ai compris marche pas
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT dbo.etat_engagement.montant_engager, SUM(dbo.modification_engager.montant) AS som_modification HAVING (dbo.modification_engager.n_certification not like '') , 
    dbo.etat_engagement.n_nature_engagement
    FROM dbo.etat_engagement LEFT OUTER JOIN
    dbo.modification_engager ON dbo.etat_engagement.id2 = dbo.modification_engager.id2
    WHERE (dbo.etat_engagement.id1 = 2)
    GROUP BY dbo.etat_engagement.montant_engager, dbo.etat_engagement.n_nature_engagement

    si vous comprenez bien je veut que la sum(dbo.modification_engager.montant) relatif pour chaque ligne renvoie que la sum des montant dont n_certification pas vide

  5. #5
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT dbo.etat_engagement.montant_engager,
    SUM(CASE WHEN ISNULL(dbo.modification_engager.n_certification,'')='' THEN 0 ELSE ISNULL(dbo.modification_engager.montant,0) END ) AS som_modification, dbo.etat_engagement.n_nature_engagement
    FROM dbo.etat_engagement LEFT OUTER JOIN dbo.modification_engager ON dbo.etat_engagement.id2 = dbo.modification_engager.id2
    WHERE (dbo.etat_engagement.id1 = 2)
    GROUP BY dbo.etat_engagement.montant_engager, dbo.etat_engagement.n_nature_engagement

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 150
    Par défaut
    Désolé de te déranger, mais ça renvoie une erreur pour la partie :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SUM(CASE WHEN ISNULL(dbo.modification_engager.n_certification, '') 
                   = '' THEN 0 ELSE ISNULL(dbo.modification_engager.montant, 0) END) AS Expr1
    les types de données de type text et varchar sont incompatibles dans l'opérateur equal to
    En plus je ne suis pas certain si cette ligne renvoie la somme des montants dont n_certification est différent de null puisque je ne vois pas IS NOT NULL.

    PS : la colonne n_certification de type varchar.

  7. #7
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    dbo.modification_engager.montant est de quel type?
    n_certification est en VARCHAR(max)?


    + je suis pas certain si cette ligne renvoie la somme des montant dont n_certification différent de null puisque je voit pas ISNOTTNULL
    Si je simule ca pas ISNULL(colonne,'')='' qui gère à la fois le cas du NULL est de la chaine vide ''...

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 150
    Par défaut
    dbo.modification_engager.montant type float
    n_certification est en VARCHAR(max)

  9. #9
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    dbo.modification_engager.montant type float
    n_certification est en VARCHAR(max)

    Etes vous sûr que l'erreur intervient ici?

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

Discussions similaires

  1. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  2. Prob de requete sql et variable
    Par agent-zaizai dans le forum ASP
    Réponses: 11
    Dernier message: 21/10/2003, 16h54
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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