Probleme SQL server 2005 [Résolu/Fermé]

Signaler
Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
-
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
-
Bonjour,

J'ai un probleme les amis,

en effet j'aimerais savoir comment forcer une requete à renvoyer un résultat quans celui ci est NULL?

Exemple : je parcours le mois de mars je récupere la somme des paiement de chaque jour:
il me renvoie 1: 100; 5 :150...

Et je voudrais qu'il me renvoie 1:100 ; 2 :0 ...

SELECT round(sum(champ_montant.MONTANT_VENTE_TTC),2)as mt_tot,day(champ_date)
FROM tables
WHERE champdate between '01/03/2010' and DATEADD(dd,1,'31/03/2010')
group by day(champdate)
order by day(champdate)

merci pour votre aide.


14 réponses

En créant une fonction ?
Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
16
Bonjour , pourrais tu m'eclaircir sur ce point , car je n'utilise jamais de fonction pour executer des requetes mis a part dans mes procédures stockées .
Ben une fonction c'est comme une procédure, sauf que ça retourne quelque chose.
Après demandes en plus a google , je suis pas un expert en la matière
Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
16
up
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
356
Tu peux traiter le problème au niveau de l'application (php?).

Ou alors tu fais une deuxième requête pour chercher les dates pour lesquelles il n'y a pas d'enregistrement(requête inverse...)
Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
16
Salut , non je traite ces données directement dans excel et donc générer des graphiques automatiquement , c'est pour cela qu'il me faudrait :

-Si il n'y a pas de montant au jour 5 , il me retourne quand même le jour 5 avec la valeur 0.

Je suis bloqué la dessus, tu peux m'éclaircir sur les requêtes inverses?
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
356

SELECT 0 as mt_tot, day(champ_date) 
FROM tables 
WHERE day(champ_date) NOT IN 
( 
SELECT day(champ_date) 
FROM tables 
WHERE champdate between '01/03/2010' and DATEADD(dd,1,'31/03/2010') 
group by day(champdate) 
order by day(champdate) 
) 



Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
16
Bien joué breub , maintenant j'ai tous les enregistrements ou il n'y a rien (0).

Aurais tu une solution pour récupérer la valeur (sum) quand il y a du contenu ;

car la j'ai 2:0;3:0.... , mais plus 1:150 ...
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
356
Malheureusement je ne pense pas que ce soit possible. Tu dois réussir à jongler entre les deux requêtes...

Par exemple, tu affiches les deux requêtes à la suite puis tu fais un tri global sur la date...c'est une solution. Après je ne m'y connait pas assez en excel(je n'excelle pas...) pour savoir ce que tu peux faire d'autre...

Bonne continuation
Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
16
OK merci quand meme
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
356
Et en affichant les deux requêtes à la suite + tri par date c'est pas faisable???
Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
16
Je regarde de ce coté.pas simple lol
Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
16
C'est bon en fait j'ai réussi à faire une seule requête en mettant un "union".
@+
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
356
Ok bien joué. Je t'ai dit je ne m'y connais pas du tout en excel.@+