J'ai une table comme suit:
Ma sortie attendue est (10,20,30 sont deptno): P> < P>
p>
J'ai donc essayé comme ceci: p> mais je reçois une erreur comme: < / p> Comment puis-je obtenir cette sortie? p> p>
3 Réponses :
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>
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;
@Gmb ne doit pas avoir besoin d'ajouter dans le else 0 code> bit; somme code> ignore les valeurs null.
@Boneist: Oui, vous êtes correct, je viens Testé que et découvert.
Vous avez rencontré l'erreur due à l'utilisation de colonnes directes dans Mais vous pouvez également utiliser acclamations !! p> p> p> clause code> (sans agrégat code> fonction) sans les mentionner dans groupe par code> clause. (Comme mentionné dans les réponses). pivot code> pour la même sortie que sur la même sortie: p>
Ne jamais ajouter de données comme une image ....