Bonjour,
Quel est l'equivalent sous Oracle de la syntaxe "GROUP BY ALL" ?
En fait je n'arrive a faire afficher mon en-tete de ligne meme si le comptage est null , et je souhaiterais qu'il affiche un comptage meme s'il est egal à NULL ou 0 ....
Bonjour,
Quel est l'equivalent sous Oracle de la syntaxe "GROUP BY ALL" ?
En fait je n'arrive a faire afficher mon en-tete de ligne meme si le comptage est null , et je souhaiterais qu'il affiche un comptage meme s'il est egal à NULL ou 0 ....
Tu veux grouper par quelque chose qui n'existe pas? Donne-nous stpl un exemple.
Regards aussi du côté d'outer-join...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select deptno, count(empno) from emp natural right join dept group by deptno; DEPTNO COUNT(EMPNO) ---------- ------------ 10 3 20 5 30 6 40 0
regarde aussi count(case ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SQL> select deptno,count(*) from emp where sal>2900 group by deptno order by deptno; DEPTNO COUNT(*) ---------- ---------- 10 1 20 3 SQL> select deptno,count(case when sal>2900 then 1 end) from emp group by deptno order by deptno; DEPTNO COUNT(CASEWHENSAL>2900THEN1END) ---------- ------------------------------- 10 1 20 3 30 0
du coté des join , deja essayé .. pas mieux !!!
du coté des case : c'est la piste que j'essaye d'explorer, sauf que si par exemple je reprends ton exemple mon pb se situe au niveau du deptNO : pour le deptNo = 30 par exemple, certaines fois je l'ai dans l'extraction journaliere et d'autres non, et je voudrais donc l'afficher systématiquement, puisque 'etant présent par contre tout le temps dans une deuxieme table avec la quelle j'aieffectué une jointure .... suis-je clair ?
soit deptno est dans emp, dans ce cas tu fais CASE, soit deptno n'est pas dans emp mais dans dept, dans ce cas tu fais outer join.
donne un exemple avec CREATE TABLE et INSERTs si jamais tu ne trouves toujours pas
sauf si je n'ai rien compris à ta question, la requête suivante devrait suffire...
si tu laisses count(champ), effectivement, ça ne compte pas les valeurs NULL...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT CHAMP, COUNT(*) FROM TABLE GROUP BY CHAMP
Et s'il y a une autre table dans l'affaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select * from AutreTable, ( SELECT CHAMP, COUNT(*) FROM TABLE GROUP BY CHAMP) Table1 where table1.champ(+) = AutreTable.AutreChamp
Partager