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 :

Resultat d'une division à 0


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut Resultat d'une division à 0
    Bonjour,
    Mon probleme, est que le resultat des mes divisions reste à 0 alors que 3/36 = 0.083333333
    j'ai essayé avec la fonction CAST
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CAST((SUM(t.avoirs)/SUM(t.factures))AS FLOAT) AS Ratio
    mais le resultat reste le même si quelqu'un peut me dire ou je me suis trompé

    Voici le code :

    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 
    	t.agence,
    	SUM(t.avoirs) AS avoirs,
    	SUM(t.factures) AS factures,
    	CAST((SUM(t.avoirs)/SUM(t.factures))AS FLOAT) AS Ratio
    FROM (
    	SELECT
    		Table1.[Responsibility Center] agence,
    		COUNT(Table2.No_) avoirs,
    		NULL AS factures
     
    	FROM
    		dbo.[T1$Sales Cr_Memo Header] Table1,
    		dbo.[T1$Sales Invoice Header] Table2
     
    	WHERE 	
    		Table1.[Applies-TO Doc_ No_] = Table2.No_
    		AND DATEDIFF(day,Table2.[Posting Date],Table1.[Posting Date])>5
    		AND Table1.[Posting Date] BETWEEN '01/01/09' AND '31/05/09'
    		AND Table1.[Facture Acompte]<>1
    		AND Table1.[Lettrage Acompte]=0
    	GROUP BY Table1.[Responsibility Center]
     
    UNION ALL
     
    	SELECT	
    		[Responsibility Center] agence,
    		NULL AS avoirs,
    		COUNT(No_) factures
    	FROM
    	 	dbo.[T1$Sales Invoice Header]
    	WHERE
    	 	[Posting Date] BETWEEN '01/01/09' AND '31/05/09'
    		AND [Facture Acompte]<>1
    	GROUP BY [Responsibility Center]
    ) t
     
    GROUP BY t.agence
    ORDER BY t.agence
    Merci pour votre aide

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CAST((SUM(t.avoirs)/SUM(t.factures))AS FLOAT) AS Ratio
    Remplacez par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUM(CAST(t.avoirs AS FLOAT)) / SUM(CAST(t.factures AS FLOAT)) AS Ratio
    Le mieux serait d'avoir les colonnes avoirs et factures en type FLOAT ou MONEY ou encore NUMERIC /DECIMAL ...

    @++

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Et pour éviter de n'avoir aucun résultat à cause d'une seule ligne en division par zéro vous pouvez nullifier le diviseur à l'aide de la fonction NULLIF.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut
    Bonjour,
    Merci elsuket votre exemple m'a permis de résoudre mon probléme.

    un grand merci pour vos conseils et votre rapidité.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUM(CAST(t.avoirs AS FLOAT)) / SUM(CAST(NULLIF(t.factures, 0) AS FLOAT)) AS Ratio
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut

    Merci SQLpro,
    Pour l'explication de la fonction NULLIF
    cela fonctionne comme je le voulais.

    merci

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

Discussions similaires

  1. Resultat entier d'une division
    Par latitude38 dans le forum Langage
    Réponses: 4
    Dernier message: 24/09/2010, 13h19
  2. Syntaxe pour avoir un seul resultat dans une requete
    Par Pompil dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/09/2003, 15h51
  3. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14
  4. Proposer le resultat d'une requête en téléchargement
    Par Lux interior dans le forum XMLRAD
    Réponses: 5
    Dernier message: 17/02/2003, 15h44
  5. [VB6] [Excel] Résultat d'une requete ds une feuille
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/01/2003, 17h52

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