0
votes

Coincé dans la requête à Oracle

J'ai une table comme suit:

 Entrez la description de l'image ici

Ma sortie attendue est (10,20,30 sont deptno): < P>  Entrez la description de l'image ici

J'ai donc essayé comme ceci: xxx

mais je reçois une erreur comme: < / p> xxx

Comment puis-je obtenir cette sortie?


1 commentaires

Ne jamais ajouter de données comme une image ....


3 Réponses :


2
votes

Vous avez votre agrégation conditionnelle autour du mauvais sens. Vous devez d'abord appliquer la condition aux données, puis agrégez, E.G.:

SELECT job,
       SUM(case when deptno = 10 then sal end) dept_10_data,
       ...
FROM   ot.employee
GROUP BY job;

somme code>) ignorent les valeurs null. P> p>


0 commentaires

3
votes

Vous êtes presque là. Vous devez mettre le cas code> expression à l'intérieur em> une fonction agrégée. Ici, vous souhaitez utiliser somme () code>.

select 
    job,
    sum(case when deptno = 10 then sal end) dept_10_data,
    sum(case when deptno = 20 then sal end) dept_20_data,
    sum(case when deptno = 30 then sal end) dept_30_data
from ot.employee 
group by job;


2 commentaires

@Gmb ne doit pas avoir besoin d'ajouter dans le else 0 bit; somme ignore les valeurs null.


@Boneist: Oui, vous êtes correct, je viens Testé que et découvert.



1
votes

Vous avez rencontré l'erreur due à l'utilisation de colonnes directes dans clause (sans agrégat fonction) sans les mentionner dans groupe par clause. (Comme mentionné dans les réponses).

Mais vous pouvez également utiliser pivot pour la même sortie que sur la même sortie: xxx

acclamations !!


0 commentaires