Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2011, 09h32   #1
Invité de passage
 
Inscription : avril 2008
Messages : 65
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 65
Points : 3
Points : 3
Par défaut problème de division sur un champ null

bonjour,

dans ma SP je calcul une colonne qui est égal à la division de deux autre champs récupérés à partir d'autre table mais ça marche pas.

il me renvoi une erreur 'division par zero':

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
SELECT      
            A.Monid
           ,B.ProdtId
           ,B.InsId
           ,A.SitId
           ,(B.Value -P.Value/B.Value,1 )AS Value
           ,GETDATE()  
 
 
   FROM ArPValues A 
 
   JOIN AsValues B ON B.ProdtId = A.ProdtId
   JOIN Prod  P ON P.ProdtId = B.ProdtId
xavier81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 10h00   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour

je vais supposer que tu as omis le COALESCE en postant ta requête... :

Code SQL :
1
2
 
,COALESCE(B.Value -P.Value/B.Value,1 )AS Value
?

Cependant, cela ne vient pas des NULLs, mais tu dois avoir quelque part B.Value=0, ce qui provoque l'erreur

Reste à savoir ce que tu veux comme résultats dans ce cas, mais sur le principe tu peux faire quelque chose comme :
Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
SELECT      
            A.Monid
           ,B.ProdtId
           ,B.InsId
           ,A.SitId
           ,CASE B.Value
                      WHEN NULL THEN NULL -- ou autre...
                      WHEN 0 THEN 0 --ou autre
                      ELSE B.Value -P.Value/B.Value
           END AS Value
           ,GETDATE()  
 
 
   FROM ArPValues A 
 
   JOIN AsValues B ON B.ProdtId = A.ProdtId
   JOIN Prod  P ON P.ProdtId = B.ProdtId
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/03/2011, 12h35   #3
Invité de passage
 
Inscription : avril 2008
Messages : 65
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 65
Points : 3
Points : 3
j'ai réglé le problème en utilisant 'nullif '

merci
xavier81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h51.


 
 
 
 
Partenaires

Hébergement Web