Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1547 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Edit] Forcer Oracle à retourner une ligne avec des 0

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Edit] Forcer Oracle à retourner une ligne avec des 0

n°1102861
jay-jay69
Posté le 31-05-2005 à 13:44:20  profilanswer
 

Bonjour,
 
J'ai un petit soucis avec Oracle.
En effet, je désire faire une requête qui renvoie le CA TTC d'un magasin pour l'année précédente. Or, certains magasins n'étaient pas ouvert l'année précédente, donc Oracle supprime COMPLETEMENT la ligne de ce magasin. Moi je voudrais qu'il me mette la ligne avec, quand il n'a pas de valeur, un '0' ou quelque chose comme ca.
 
Voici un exemple de requête :  
 

Code :
  1. SELECT MIN(F_CA.CAMO/F_CA.NBJO) as "CA Jours Objectif",
  2.    SITES.CODE_SITE_GCO as "Libellé Site",
  3.    SITES.CODE_SITE_CPT as "Libellé Site Compta",
  4.    decode(SUM(F_STAT_VENTE_M.CA_TTC),NULL,'pas de valeur'
  5.             ,NOT NULL,SUM(F_STAT_VENTE_M.CA_TTC))"CA HT en Cours",
  6.    SUM(F_STAT_VENTE_M.CA_TTC/F_CA.NBJR) as "M/AN N-1",
  7.    F_STAT_VENTE_M.ID_MOIS
  8.  
  9.  
  10. FROM F_CA,F_STAT_VENTE_M,SITES,ARTICLES,DIR_REG
  11. WHERE F_CA.ID_MOIS=concat(substr((to_char(sysdate-365, 'YYYY')),1,4),substr((to_char(sysdate, 'MM')),1,2))
  12. AND F_CA.ID_SITE=F_STAT_VENTE_M.ID_SITE
  13. AND F_CA.ID_MOIS=F_STAT_VENTE_M.ID_MOIS
  14. AND F_CA.ID_SITE=F_STAT_VENTE_M.ID_SITE
  15. AND F_STAT_VENTE_M.ID_ART=ARTICLES.ID_ART
  16. AND F_CA.ID_SITE=SITES.ID_SITE
  17. AND SITES.CODE_DIR_REG=DIR_REG.CODE_DIR_REG
  18. GROUP BY SITES.CODE_SITE_GCO,SITES.CODE_SITE_CPT,F_STAT_VENTE_M.ID_MOIS


 
 
Merci d'avance,
 
m.


Message édité par jay-jay69 le 31-05-2005 à 18:50:06
mood
Publicité
Posté le 31-05-2005 à 13:44:20  profilanswer
 

n°1102878
denzz
huhuuuuu ! (désolé )
Posté le 31-05-2005 à 13:57:27  profilanswer
 

tu est sur la bonne voie à mon avis ...  
tu est sur que ta fonction 'decode' est bien utilisée ?  
quel est le pb sur ta requête ??  

n°1102884
jay-jay69
Posté le 31-05-2005 à 14:01:43  profilanswer
 

Code :
  1. SELECT MIN(F_CA.CAMO/F_CA.NBJO) as "CA Jours Objectif",
  2.    SITES.CODE_SITE_GCO as "Libellé Site",
  3.    SITES.CODE_SITE_CPT as "Libellé Site Compta",
  4.    decode(SUM(F_STAT_VENTE_M.CA_TTC),NULL,'pas de valeurs'                                                 // apparemment il ne se trouve jamais dans ce cas la
  5.             ,NOT NULL,SUM(F_STAT_VENTE_M.CA_TTC))"CA HT en Cours",              // ici, le NOT NULL, il aime pas trop trop
  6.    SUM(F_STAT_VENTE_M.CA_TTC/F_CA.NBJR) as "M/AN N-1",
  7.    F_STAT_VENTE_M.ID_MOIS
  8.  
  9.  
  10. FROM F_CA,F_STAT_VENTE_M,SITES,ARTICLES,DIR_REG
  11. WHERE F_CA.ID_MOIS=concat(substr((to_char(sysdate-365, 'YYYY')),1,4),substr((to_char(sysdate, 'MM')),1,2))
  12. AND F_CA.ID_SITE=F_STAT_VENTE_M.ID_SITE
  13. AND F_CA.ID_MOIS=F_STAT_VENTE_M.ID_MOIS
  14. AND F_CA.ID_SITE=F_STAT_VENTE_M.ID_SITE
  15. AND F_STAT_VENTE_M.ID_ART=ARTICLES.ID_ART
  16. AND F_CA.ID_SITE=SITES.ID_SITE
  17. AND SITES.CODE_DIR_REG=DIR_REG.CODE_DIR_REG
  18. GROUP BY SITES.CODE_SITE_GCO,SITES.CODE_SITE_CPT,F_STAT_VENTE_M.ID_MOIS


 
 
Je trouve ca bien bizarre... Tu as une idée toi?

n°1102922
jay-jay69
Posté le 31-05-2005 à 14:25:17  profilanswer
 

Je viens de penser à la fonction 'nvl' mais ca ne marche pas non plus...
Ca me saoule!

n°1102923
jay-jay69
Posté le 31-05-2005 à 14:26:21  profilanswer
 

Voila avec 'nvl' :
 

Code :
  1. SELECT MIN(F_CA.CAMO/F_CA.NBJO) as "CA Jours Objectif",
  2.    SITES.CODE_SITE_GCO as "Libellé Site",
  3.    SITES.CODE_SITE_CPT as "Libellé Site Compta",
  4.    NVL(SUM(F_STAT_VENTE_M.CA_TTC),0) as "CA TTC",
  5.    NVL(SUM(F_STAT_VENTE_M.CA_TTC/F_CA.NBJR),0) as "M/AN N-1"
  6.  
  7. FROM F_CA,F_STAT_VENTE_M,SITES,ARTICLES,DIR_REG
  8. WHERE F_CA.ID_MOIS=concat(substr((to_char(sysdate-365, 'YYYY')),1,4),substr((to_char(sysdate, 'MM')),1,2))
  9. AND F_CA.ID_SITE=F_STAT_VENTE_M.ID_SITE
  10. AND F_CA.ID_MOIS=F_STAT_VENTE_M.ID_MOIS
  11. AND F_CA.ID_SITE=F_STAT_VENTE_M.ID_SITE
  12. AND F_STAT_VENTE_M.ID_ART=ARTICLES.ID_ART
  13. AND F_CA.ID_SITE=SITES.ID_SITE
  14. AND SITES.CODE_DIR_REG=DIR_REG.CODE_DIR_REG
  15. AND SITES.ID_SITE='58'
  16. GROUP BY SITES.CODE_SITE_GCO,SITES.CODE_SITE_CPT

n°1103048
jay-jay69
Posté le 31-05-2005 à 15:50:57  profilanswer
 

personne?

n°1103128
ali0baba
Posté le 31-05-2005 à 16:39:47  profilanswer
 

sinon pour faire simple ta qu'a faire une union du genre :
 
select (ta requete ...)  
union
select magasin , 0 as chiffree_daffaire from ...

n°1103254
jay-jay69
Posté le 31-05-2005 à 17:45:13  profilanswer
 

En fait, je viens de voir, il me met a chake fois :
"No Rows Returned" ...
 
Je craque...

n°1103274
jay-jay69
Posté le 31-05-2005 à 18:01:03  profilanswer
 

On peut forcer Oracle a renvoyer une ligne au minimum?

n°1103315
jay-jay69
Posté le 31-05-2005 à 18:47:55  profilanswer
 

up?

mood
Publicité
Posté le 31-05-2005 à 18:47:55  profilanswer
 

n°1103405
betsamee
Asterisk Zeperyl
Posté le 31-05-2005 à 20:34:33  profilanswer
 

et en utilisant un left join entre la table des sites et des CA (j'ai pas regarde en profondeur mais c'est l'idee) plutot qu'en les liant dans le where?

n°1103486
jay-jay69
Posté le 31-05-2005 à 22:06:21  profilanswer
 

en fait, je sais pas si j'ai été clair, mais le fait que ma requete ne donne pas de resultat est normal. Mais je veux simplement qu'il me renvoie une ligne avec des 0 au lieu de rien du tout.
 
Je pensais pas que c'etait si compliqué... :(

n°1103853
denzz
huhuuuuu ! (désolé )
Posté le 01-06-2005 à 10:46:30  profilanswer
 

si tu veux une ligne avec des zéros, tu fais select 0 as truc, ,0 as machin ,0 as bidule,0 as youpizero,0 as zero,0 as truc...
 
 
je vois pas l'intérêt de vouloir remplacer, par requêtage en plus, le contenu vide d'un résultat de requête par une ligne de zéros ...
ce qui est intéressant par contre c de pouvoir mettre une valeur autre que null si des CHAMPS sont nulls, mais si ta requête ne renvoie rien, il n'y a rien à remplacer à priori ....

n°1103975
Arjuna
Aircraft Ident.: F-MBSD
Posté le 01-06-2005 à 12:20:49  profilanswer
 

Nan, le coup du UNION avec les 0 me semble la meilleur solution.

n°1103989
jay-jay69
Posté le 01-06-2005 à 12:27:28  profilanswer
 

Oui c'est ce que j'ai fait... Ca marche bien... Je vous remercie!
 
m.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Edit] Forcer Oracle à retourner une ligne avec des 0

 

Sujets relatifs
[vba] cmt forcer excel a enregistrer a l'emplacement c:\windows\test ?Structure d'une table ORACLE
Combobox selectionné automatiquement la 1ere ligneimportation d'un fichier CSV dans une base oracle
Flash et php retour à la lignefaire une recherche et recupere la ligne
selection d1 ligne si date système dans périodeVues matérialisées et Oracle
[Résolu] : Problème de liens "local/en ligne".[C#] eviter un retour à la ligne avec Console.WriteLine
Plus de sujets relatifs à : [Edit] Forcer Oracle à retourner une ligne avec des 0


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR