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

MS SQL Server Discussion :

Deux requêtes en une avec sommes et conditions complexes


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut Deux requêtes en une avec sommes et conditions complexes
    Bonjour, la discussion étant terminée car j'avais résolu mon problème dans la question: "REQUETE AVEC 2 COUNT AVEC 1 CONDITION POUR CHAQUE COUNT", j'ai une petite variante, en insérant une requête conditionnelle plus complexe

    La solution proposée par REI ICHIDO (que j'utilise régulièrement depuis) dans le fil cité ci-dessus ne fonctionne pas dans les cas suivants car il doit me manquer quelque chose dans la syntaxe:

    Voici ce qui fonctionne:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SUM(CASE WHEN MATABLE.MACOLONNE_N1 = <<condition1>> THEN 1 ELSE 0 END) AS cpt1
    , SUM(CASE WHEN MATABLE.MACOLONNE_N2 = <<condition2>> THEN 1 ELSE 0 END) AS cpt2
    FROM MATABLE

    Mais maintenant j'aimerais que la condition soit liée se fasse de la façon suivante: et que je n'arrive pas à faire fonctionner car je reçois le message "Impossible d'exécuter une fonction d'agrégation sur une expression comportant un agrégat ou une sous-requête"

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT SUM(CASE WHEN MATABLE.MACOLONNE_N1 IN
    (
    SELECT MATABLE.MACOLONNE_N1 FROM MATABLE WHERE MATABLE.COLONNE_X =CONDITION 1, MATABLE.COLONNE_Y=CONDITION 2 (etc.) THEN 1 ELSE 0 END),SUM(CASE WHEN MATABLE.MACOLONNE_N2 IN
    (
    SELECT MATABLE.MACOLONNE_N2 FROM MATABLE WHERE MATABLE.COLONNE_X =CONDITION 3, MATABLE.COLONNE_Y=CONDITION 4 (etc.) THEN 1 ELSE 0 END) FROM MATABLE

    Merci

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Bonjour,

    Le message d'erreur est explicite : on ne peut pas faire d'aggrégation (ici, une somme) sur une valeur récupérée par un sous-select. Il va donc falloir faire une jointure préalable. En mode vite fait - il y a très certainement mieux et plus performant à faire :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    SELECT SUM(Condition1.OK)
             ,SUM(Condition2.OK)
             [...]
    FROM MATABLE
            CROSS APPLY
    (
    SELECT CASE 
       WHEN EXISTS (SELECT 1 
                      FROM MATABLE m2 
                     WHERE m2.MACOLONNE_N1 = MATABLE.MACOLONNE_N1
                       AND   m2.COLONNE_X =CONDITION 1 
                       AND m2.COLONNE_Y=CONDITION 2 
                          -- (etc.) 
                      ) THEN 1 
                 END AS OK
     ) Condition1
            CROSS APPLY
    (
    SELECT CASE 
       WHEN EXISTS (SELECT 1 
                      FROM MATABLE m3 
                     WHERE m3.MACOLONNE_N2 = MATABLE.MACOLONNE_N2
                       AND  m3.COLONNE_X =CONDITION 3
                       AND m3.COLONNE_Y=CONDITION 4
                          -- (etc.) 
    ) Condition2

  3. #3
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    merci

    je regarde ce que cela donne

  4. #4
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    Bon, là c'est vraiment une syntaxe que je ne comprend pas bien

    Est-il envisageable d'envoyer en PJ ce que je veux en terme de requête avec les noms réels de table et de colonne?

    merci

  5. #5
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Oui, tout à fait, c'est même toujours mieux qu'avec des noms fictifs

  6. #6
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    Bon, voici ce que je voudrais en PJ

    -Avoir une colonne avec distribution par Année
    -Le compte sur une colonne avec une condition
    -Le compte sur une colonne avec la condition symétrique à la première

    Merci
    Fichiers attachés Fichiers attachés

  7. #7
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Dans la sous-requête de condition, je ne comprend pas du tout pourquoi il y a des GROUP BY ?

    De la façon dont je comprend la requête globale, il s'agit de compter toutes les lignes dont le couple (IUTPE,NUMOSJR) est tel qu'il existe au moins une autre ligne dans la table ayant le même couple (IUTPE,NUMOSJR) et avec certaines conditions. Et là, pourquoi vouloir faire un regroupement ?

    Note : si le but est bien d'avoir une égalité sur IUTPE et sur NUMOSJR, faire la concaténation est dangereux (je ne connais pas les codes utilisés, mais avec de la concaténation le couple ('A','BC') se retrouve confondu avec ('AB','C'). En outre, les index ne seront pas utilisés. Et il y a aussi deux conditions concurrentes ... Probablement parce que vous ne mettez aucun alias, c'est impossible de savoir à quelle table vous faites référence.

    En supprimant le GROUP BY, et en utilisant EXISTS pour ne pas avoir à utiliser concaténation et IN, ça donne ceci :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    SELECT YEAR(i.DATSRTSJR) AS ANNEE
          ,SUM(condition1.OK) AS val1
    	  ,sum(condition2.OK) AS val2
    	FROM IDSJR i
    		CROSS APPLY
    		(
    		 SELECT CASE WHEN EXISTS 
    				(SELECT 1
    					FROM IDSJR ic1
    						WHERE ic1.IUTPE = i.IUTPE
    						AND   ic1.NUMOSJR= i.NUMOSJR
    						AND   ic1.CMDHSP+ic1.GHMHSP ='23Z02Z'
    						AND   YEAR(ic1.DATSRTSJR) BETWEEN 2010 AND 2012
    						AND   MONTH(ic1.DATSRTSJR)BETWEEN '01' AND '08'
    						AND   ic1.IUUFHBG='0015'
    						AND   ic1.AUTORISATION_LIT ='08'
    						AND   ic1.CMDHSP+ic1.GHMHSP <>'23Z02Z'  -- Condition absurde car en conflit avec la 3ème ligne 
    				) THEN 1
    				ELSE 0
    				END AS OK
    		) condition1
    		CROSS APPLY
    		(
    		 SELECT CASE WHEN EXISTS 
    				(SELECT 1
    					FROM IDSJR ic2
    						WHERE ic2.IUTPE = i.IUTPE
    						AND   ic2.NUMOSJR= i.NUMOSJR
    						AND   ic2.CMDHSP+ic2.GHMHSP ='23Z02Z'
    						AND   YEAR(ic2.DATSRTSJR) BETWEEN 2010 AND 2012
    						AND   MONTH(ic2.DATSRTSJR)BETWEEN '01' AND '08'
    						AND   ic2.IUUFHBG='0015'
    						AND   ic2.AUTORISATION_LIT <>'08'
    						AND   ic2.CMDHSP+ic2.GHMHSP ='23Z02Z'
    				) THEN 1
    				ELSE 0
    				END AS OK
    		) condition2
    EDIT : la condition CMDHSP+GHMHSP ='23Z02Z' devrait plutôt se voir écrite sous la forme de deux conditions séparées, à moins que vous n'ayez un modèle de données étrange. Cf ma remarque sur le IN.

  8. #8
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    Merci

    -En fait les 2 champs concaténés représentent une clef primaire combinée (ce n'est pas moi qui ai conçu la base)

    -ici il s'agit de séjours hospitaliers, chaque séjour unique est défini par son IUTPE ET son NUMOSJR

    -ce que je cherche à faire -je peux trés bien faire 2 requêtes séparées puisque les 2 conditions sont symétriques- mais ce que j'aimerais, c'est avoir le résultat de chacune des condition dans 2 colonnes d'un même tableau

    -le Group by sous chacune des conditions, erreur de ma part

    -Pour ce qui est de votre requête, j'obtiens le message suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ]Serveur*: Msg 170, Niveau 15, État 1, Ligne 5
    Ligne 5 : syntaxe incorrecte vers 'APPLY'.
    Serveur*: Msg 170, Niveau 15, État 1, Ligne 20
    Ligne 20 : syntaxe incorrecte vers 'OK'.
    Peut être ma version de mon analyseur de requêtes SQL trop ancien? (version SQL 8.00.194)

  9. #9
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Donc du SQL Server 2000, c'est en effet certainement la source de l'erreur.

    Bon, on peut s'en tirer en faisant du scalaire (ça devrait passer sur SQL Server 2000, mais je n'en suis pas sûr, n'ayant jamais travaillé dessus) :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    SELECT YEAR(t.DATSRTSJR) AS ANNEE
          ,SUM(t.condition1) AS val1
    	  ,sum(t.condition2) AS val2
    	FROM (SELECT *
    				,(
    					 SELECT CASE WHEN EXISTS 
    							(SELECT 1
    								FROM IDSJR ic1
    									WHERE ic1.IUTPE = i.IUTPE
    									AND   ic1.NUMOSJR= i.NUMOSJR
    									AND   ic1.CMDHSP+ic1.GHMHSP ='23Z02Z'
    									AND   YEAR(ic1.DATSRTSJR) BETWEEN 2010 AND 2012
    									AND   MONTH(ic1.DATSRTSJR)BETWEEN '01' AND '08'
    									AND   ic1.IUUFHBG='0015'
    									AND   ic1.AUTORISATION_LIT ='08'
    									AND   ic1.CMDHSP+ic1.GHMHSP <>'23Z02Z'  -- Condition absurde car en conflit avec la 3ème ligne 
    							) THEN 1
    							ELSE 0
    							END AS OK
    					) condition1
    				,(
    				 SELECT CASE WHEN EXISTS 
    						(SELECT 1
    							FROM IDSJR ic2
    								WHERE ic2.IUTPE = i.IUTPE
    								AND   ic2.NUMOSJR= i.NUMOSJR
    								AND   ic2.CMDHSP+ic2.GHMHSP ='23Z02Z'
    								AND   YEAR(ic2.DATSRTSJR) BETWEEN 2010 AND 2012
    								AND   MONTH(ic2.DATSRTSJR)BETWEEN '01' AND '08'
    								AND   ic2.IUUFHBG='0015'
    								AND   ic2.AUTORISATION_LIT <>'08'
    								AND   ic2.CMDHSP+ic2.GHMHSP ='23Z02Z'
    						) THEN 1
    						ELSE 0
    						END AS OK
    				) condition2
    			FROM IDSJR i
    		) t
    GROUP BY YEAR(t.DATSRTSJR)
    EDIT :
    En fait les 2 champs concaténés représentent une clef primaire combinée (ce n'est pas moi qui ai conçu la base)
    Je persiste dans ce cas : la clé, c'est bien la paire (IUTPE , NUMOSJR), non ? Et pas la concaténation des deux.

  10. #10
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    La requête tourne
    Le résultat: bien que l'instruction
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    YEAR(ic2.DATSRTSJR) BETWEEN 2010 AND 2012
    ainsi que
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    AND   YEAR(ic1.DATSRTSJR) BETWEEN 2010 AND 2012
    soient indiquées, il me donne les valeurs depuis 1993; peut être que cette syntaxe (qui fonctionne habituellement) ne peut fonctionner ici



    J'ai bien sûr enlevé l'incohérence (erreur de copié collé) et fait une ou 2 modifs pour avoir exactement ce que je voulais, et en dehors du problème de la fonction YEAR qui ne fonctionne pas (si vous avez une idée..), j'ai le résultat présenté comme je veux

    Merci beaucoup dans tous les cas
    http://www.developpez.net/forums/ima.../icon_razz.gif
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    SELECT YEAR(t.DATSRTSJR) AS ANNEE
          ,SUM(t.condition1) AS val1
    	  ,sum(t.condition2) AS val2
    	FROM (SELECT *
    				,(
    					 SELECT CASE WHEN EXISTS 
    							(SELECT 1
    								FROM IDSJR ic1
    									WHERE ic1.IUTPE = i.IUTPE
    									AND   ic1.NUMOSJR= i.NUMOSJR
    									AND   YEAR(ic1.DATSRTSJR) BETWEEN 2010 AND 2012
    									AND   MONTH(ic1.DATSRTSJR)BETWEEN '01' AND '08'
    									AND   ic1.IUUFHBG='0015'
    									AND   ic1.AUTORISATION_LIT ='08'
    									--AND   ic1.CMDHSP+ic1.GHMHSP <>'23Z02Z'  -- Condition absurde car en conflit avec la 3ème ligne 
    									AND   LEFT(GHS_VALORISATION,4)  IN ('7991','7992','7993')
    							) THEN 1
    							ELSE 0
    							END AS OK
    					) condition1
    				,(
    				 SELECT CASE WHEN EXISTS 
    						(SELECT 1
    							FROM IDSJR ic2
    								WHERE ic2.IUTPE = i.IUTPE
    								AND   ic2.NUMOSJR= i.NUMOSJR
    								AND   YEAR(ic2.DATSRTSJR) BETWEEN 2010 AND 2012
    								AND   MONTH(ic2.DATSRTSJR)BETWEEN '01' AND '08'
    								AND   ic2.IUUFHBG='0015'
    								AND   ic2.AUTORISATION_LIT ='08'
    								--AND   ic2.CMDHSP+ic2.GHMHSP ='23Z02Z'
    								AND   LEFT(GHS_VALORISATION,4)  NOT IN ('7991','7992','7993')
    						) THEN 1
    						ELSE 0
    						END AS OK
    				) condition2
    			FROM IDSJR i
    		) t
    GROUP BY YEAR(t.DATSRTSJR)

  11. #11
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Attention, ici la condition sur YEAR est posée sur le 2ème accès à la table via le EXISTS - que j'ai basé sur l'utilisation de votre IN.

    En fait j'ai surtout l'impression que vous pouvez totalement vous passer du EXISTS ... Mais là il faudrait vraiment savoir ce que vous voulez obtenir.

    Actuellement, la requête :
    - considère *toutes* les lignes de la table : il n'y a aucune condition WHERE.
    - pour chacune d'entre elle, va chercher s'il existe une autre ligne de la table ayant le même couple (IUTPE , NUMOSJR) qui satisfait à certaines conditions (dont celui d'avoir l'année comprise entre 2010 et 2012) ; si c'est le cas, elle compte 1, sinon 0
    - et enfin fait la somme par année de ces lignes (il y a bien le GROUP BY année à la fin, donc rien d'étonnant a priori à ce que plusieurs années soient sorties).

  12. #12
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    Merci

    J'ai en effet modifié de la façon suivante, de cette façon cela m'enlève les années inutiles

    Je me retrouve avec 3 chiffres dans chaque colonne
    5/6 sont identiques à chaque hémi-requête lancée isolément, sauf pour 1 d'entre eux (de l'ordre de 3 unités en sus sur un total de 74)

    En tous cas merci beaucoup pour votre aide, rapide de surcroït!



    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    SELECT YEAR(T.DATSRTSJR) AS ANNEE
          ,SUM(T.CONDITION1) AS VAL1
    	  ,SUM(T.CONDITION2) AS VAL2
    	FROM (SELECT *
    				,(
    				SELECT CASE WHEN EXISTS 
    					(SELECT 1
    						FROM IDSJR IC1
    							WHERE IC1.IUTPE = I.IUTPE
    							AND   IC1.NUMOSJR= I.NUMOSJR
    							AND   LEFT(GHS_VALORISATION,4)  IN ('7991','7992','7993')
    						) THEN 1 ELSE 0
    						END AS OK
    					) CONDITION1
    				,(
    				SELECT CASE WHEN EXISTS 
    					(SELECT 1
    						FROM IDSJR IC2
    							WHERE IC2.IUTPE = I.IUTPE
    							AND   IC2.NUMOSJR= I.NUMOSJR
    							AND   LEFT(GHS_VALORISATION,4)  NOT IN ('7991','7992','7993')
    						) THEN 1 ELSE 0
    						END AS OK
    				) CONDITION2
    			FROM IDSJR I 
    				WHERE YEAR(I.DATSRTSJR)>=2010 
    				AND MONTH(I.DATSRTSJR)<09
    				AND   I.IUUFHBG='0015'
    				AND   I.AUTORISATION_LIT ='08'
    		) T
    							GROUP BY YEAR(T.DATSRTSJR)

  13. #13
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 118
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    Ca me parait quand même un peu compliqué par rapport à ce que je crois comprendre de votre besoin.

    En prenant la dernière requête, je la transformerai de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT YEAR(DATSRTSJR) AS ANNEE
    	, SUM(CASE WHEN LEFT(GHS_VALORISATION,4) IN ('7991','7992','7993') THEN 1 ELSE 0 END) AS VAL1
    	, SUM(CASE WHEN LEFT(GHS_VALORISATION,4) NOT IN ('7991','7992','7993') THEN 1 ELSE 0 END) AS VAL2
    FROM IDSJR 
    WHERE YEAR(DATSRTSJR)>=2010 
    AND MONTH(DATSRTSJR)<09
    AND IUUFHBG='0015'
    AND AUTORISATION_LIT ='08'
    GROUP BY YEAR(DATSRTSJR)
    Ca me parait plus simple, plus optimisé et plus maintenable. A voir si ça répond bien à votre besoin.

  14. #14
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    SQLDev; merci

    C'est curieux; je me retrouve exactement avec le résultat affiché comme je le veux, de façon simple, et du reste je sais faire cela! (grâce à Rei Ichido d'ailleurs qui m'a déjà donné cette syntaxe il y a quelques mois, et que je cite d'ailleurs lors de mon premier message)

    En fait au départ, j'ai (trés trés) mal traduit en SQL mon besoin et je suis parti je ne sais pourquoi dans quelque chose d'inutilement compliqué, ..

    Bon, j'ai un peu honte , peut-être une baisse de vigilance du vendredi

    Problème résolu cependant et merci à vous deux pour votre aide, désolé Rei Ichido pour avoir probalement été peu clair!

    Cordialement

  15. #15
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    En fait, par contre , le problème que cela ne résolve pas c'est comment afficher une colonne supplémentaire dans chacune des SUM(CASE... qui s'appelle IDSJR.Valorisation et dont le montant change en fonction de chaque valeur de SUM(CASE etc.

    Merci

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

Discussions similaires

  1. Deux requêtes en une
    Par did36 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/02/2010, 18h29
  2. Deux requêtes en une seule?
    Par pcsystemd dans le forum Requêtes
    Réponses: 5
    Dernier message: 09/07/2009, 16h28
  3. [MySQL] Deux requêtes dans une boucle
    Par stefanelle dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 25/02/2009, 10h41
  4. Deux requêtes en une
    Par dam28800 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/01/2009, 11h56
  5. Somme de deux requête en une en sql/access
    Par thepunky89 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/09/2007, 14h31

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