1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2013
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2013
    Messages : 239
    Points : 49
    Points
    49

    Par défaut Somme d'une colonne qui dépend d'une autre

    Bonjour tout le monde, j'ai un petit souci voila je fais un select pour afficher des données de ma base , je voudrai faire la somme des données affichées selon la colonne quantité et Temps_Effectif du coup j'ai fais le SUM sur Quantite mais ce que je fais pour le calcul de la colonne Temps_effectif empêche que les données soient regroupé donc si vous pouvez me dire est ce qu'il ya un moyen de faire le SUM sur la colonne que je calcule du Temps_effectif qui est représentée comme colonne C, voici ma requête avec laquelle je calcule le temps-effectif:

    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
    WITH TMP AS (
    	SELECT 	FORMAT(CAST(INWI.Date AS Date),'yyyy-MM-dd') AS Date,
    			Equipe.Matricule_Paie,
    			INWI.Matricule_FS,
    			Equipe_Cad.Employe,
    			Equipe.Equipe,
    			Projet.Projet,
    			INWI.Quantite,
    			RIGHT('0' + INWI.Tps_Net, 9) C 
    		FROM INWI 
    			INNER JOIN Equipe_Cad  ON INWI.Matricule_FS=Equipe_Cad .MatFS 
    			INNER JOIN Projet ON Projet.EtapeTraitement='INWI_PREPAID'  
    			INNER JOIN Equipe ON INWI.Matricule_FS=Equipe.Matricule_FS 
    		WHERE INWI.Date like '2017-08-01'   
    )  
    SELECT	FORMAT(CAST(Date AS Date),'yyyy-MM-dd')AS Date,
    		Matricule_Paie AS Matricule_BCC,
    		Matricule_FS,Employe AS Nom,Equipe,
    		Projet, 
    		CAST(LEFT(C, 2) AS DECIMAL(10,8)) + 
    			CAST(SUBSTRING(C, 4, 2) AS DECIMAL(10,8)) / 60 + 
    			CAST(SUBSTRING(C, 7, 2) AS DECIMAL(10,8)) / 3600 AS Temps_Effectif,
    		CAST(SUM(Quantite)AS int)AS Quant  
    	FROM TMP 
    	GROUP BY Date, Matricule_Paie ,Matricule_FS,Employe ,Equipe,Projet,C
    je signale encore que je sait que le problème est dans cette ligne de la requête CAST(LEFT(C, 2) AS DECIMAL(10,8)) +
    CAST(SUBSTRING(C, 4, 2) AS DECIMAL(10,8)) / 60 + CAST(SUBSTRING(C, 7, 2) AS DECIMAL(10,8)) / 3600 AS Temps_Effectif
    , mais je ne sais pas comment faire la somme sur cette ligne aussi pour que les données soit regroupées.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    1 375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2016
    Messages : 1 375
    Points : 4 688
    Points
    4 688
    Billets dans le blog
    5

    Par défaut

    Bonjour,

    Premièrement, votre requête est totalement illisible ! Impossible de vous aider sans la réécrire
    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
    WITH TMP AS (
    	SELECT 	FORMAT(CAST(INWI.Date AS Date),'yyyy-MM-dd') AS Date,
    			Equipe.Matricule_Paie,
    			INWI.Matricule_FS,
    			Equipe_Cad.Employe,
    			Equipe.Equipe,
    			Projet.Projet,
    			INWI.Quantite,
    			RIGHT('0' + INWI.Tps_Net, 9) C 
    		FROM INWI 
    			INNER JOIN Equipe_Cad  ON INWI.Matricule_FS=Equipe_Cad .MatFS 
    			INNER JOIN Projet ON Projet.EtapeTraitement='INWI_PREPAID'  
    			INNER JOIN Equipe ON INWI.Matricule_FS=Equipe.Matricule_FS 
    		WHERE INWI.Date like '2017-08-01'   
    )  
    SELECT	FORMAT(CAST(Date AS Date),'yyyy-MM-dd')AS Date,
    		Matricule_Paie AS Matricule_BCC,
    		Matricule_FS,Employe AS Nom,Equipe,
    		Projet, 
    		CAST(LEFT(C, 2) AS DECIMAL(10,8)) + 
    			CAST(SUBSTRING(C, 4, 2) AS DECIMAL(10,8)) / 60 + 
    			CAST(SUBSTRING(C, 7, 2) AS DECIMAL(10,8)) / 3600 AS Temps_Effectif,
    		CAST(SUM(Quantite)AS int)AS Quant  
    	FROM TMP 
    	GROUP BY Date, Matricule_Paie ,Matricule_FS,Employe ,Equipe,Projet,C
    N'est-ce pas déjà mieux ?

    Maintenant, je ne comprends pas votre problème. Rien ne vous empêche de faire la somme sur votre colonne temps_effectif. Il suffit de mettre un SUM qui englobe tout le calcul.

    Autre possibilité : effectuer le calcul dans le CTE. Ainsi, c'est votre table TMP qui contiendra le calcul tout fait.

    Il faudra juste penser à retirer la colonne C de la clause GROUP BY
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2013
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2013
    Messages : 239
    Points : 49
    Points
    49

    Par défaut

    Bonjour, quand j'ai essayer le SUM sur le Temps_Effectif mais ca ne me donne aucun résultat et je ne sais pas ou exactement ca doit être avant le Cast ou bien sur la colonne C ou bien où exactement , ca d'une part , et d'une autre part quand je retire la colonne C du group by ca donne une erreur me disant qu'elle doit être contenue dans le group by , voila si tu as une idée comment je peux mettre le SUM dans mon Calcul je te serais reconnaissant .

  4. #4
    Rédacteur/Modérateur

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    1 375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2016
    Messages : 1 375
    Points : 4 688
    Points
    4 688
    Billets dans le blog
    5

    Par défaut

    Citation Envoyé par andyajram Voir le message
    Bonjour, quand j'ai essayer le SUM sur le Temps_Effectif mais ca ne me donne aucun résultat et je ne sais pas ou exactement ca doit être avant le Cast ou bien sur la colonne C ou bien où exactement , ca d'une part
    Tu dois avoir des valeurs NULL. Si tu sommes des valeurs et que tu as au moins une valeur NULL, alors le résultat sera NULL. Tu peux t'en affranchir en utilisant la fonction COALESCE, qui te permet de spécifier la valeur à utiliser lorsqu'une expression te retour

    Citation Envoyé par andyajram Voir le message
    et d'une autre part quand je retire la colonne C du group by ca donne une erreur me disant qu'elle doit être contenue dans le group by , voila si tu as une idée comment je peux mettre le SUM dans mon Calcul je te serais reconnaissant .
    Avec le SUM tu as cette erreur ? Quelle est ta requête ?
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2013
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2013
    Messages : 239
    Points : 49
    Points
    49

    Par défaut

    non quand je met le SUM comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CAST(LEFT(SUM(C), 2) AS DECIMAL(10,8)) + 
    			CAST(SUBSTRING(SUM(C), 4, 2) AS DECIMAL(10,8)) / 60 + 
    			CAST(SUBSTRING(SUM(C), 7, 2) AS DECIMAL(10,8)) / 3600 AS Temps_Effectif,
    ca me donne
    Le type de données de l'opérande varchar n'est pas valide pour l'opérateur sum.

  6. #6
    Rédacteur/Modérateur

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    1 375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2016
    Messages : 1 375
    Points : 4 688
    Points
    4 688
    Billets dans le blog
    5

    Par défaut

    Heureusement que j'ai précisé que SUM devait englober tout le calcul...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SUM(CAST(LEFT(C, 2) AS DECIMAL(10,8)) + 
    			CAST(SUBSTRING(C, 4, 2) AS DECIMAL(10,8)) / 60 + 
    			CAST(SUBSTRING(C, 7, 2) AS DECIMAL(10,8)) / 3600) AS Temps_Effectif,
    Sinon, c'est tout à fait normal que SUM ne fonctionne pas sur les chaines de caractères, puisqu'on ne peut sommer que des types numériques.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2013
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2013
    Messages : 239
    Points : 49
    Points
    49

    Par défaut

    ouiiiii ca marche maintenant merci beaucoup beaucoup beaucoup c'est très gentil de ta part et merci pour ton temps

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

Discussions similaires

  1. [Linux] - Exécution d'un programme avec une librairie qui dépend d'une autre librairie
    Par neuromencien dans le forum Bibliothèques, systèmes et outils
    Réponses: 1
    Dernier message: 05/02/2017, 11h50
  2. Réponses: 4
    Dernier message: 09/05/2016, 13h52
  3. concevoir une liste qui dépend d'une autre
    Par doomi26 dans le forum Access
    Réponses: 3
    Dernier message: 27/02/2014, 09h27
  4. Réponses: 6
    Dernier message: 28/07/2011, 14h21
  5. Une contrainte qui depend d'une colonne
    Par redabadache3 dans le forum SQL
    Réponses: 2
    Dernier message: 03/11/2007, 13h57

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