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 ....