J'ai donc une table comme celle-ci: et je veux résumer chaque valeur pour toutes les lignes pour un identifiant spécifique dans un total d'appels de colonne, mais je ne veux pas Grouper l'ID ensemble parce qu'ils ont un numéro de mod différent. Je veux un résultat comme celui-ci: p> Je ne peux pas utiliser le groupe par car il me donnera le total pour toutes les lignes individuelles. Comment puis-je atteindre le résultat que je veux? P> p>
5 Réponses :
Vous pouvez faire quelque chose comme ceci: Je ne sais pas sur la performance de cela ... p> p>
Je pense que cela nécessiterait table code>. B> préfixe avant ID code> dans la clause SELECT
Essayez:
select t.id, t1.mod, t.total
from tab t1
join (select id, sum( IFNULL(n1,0)+ IFNULL(n2,0)+ IFNULL(n3,0)) as total
from tab
group by id) t on t.id=t1.id
SELECT `id`, `mod`, (SUM(n1) + SUM(n2) + SUM(n3)) AS total FROM `table` GROUP BY `id`,`mod`
Cela devrait fonctionner pour vous. Travaillé à Oracle. Vérifiez si les mots-clés doivent être modifiés dans MySQL.
SELECT x.id, x.mod, y.sum
FROM table x,
(SELECT id, sum(nvl(n1, 0) + nvl(n2, 0) + nvl(n3, 0)) sum
FROM table
GROUP BY id) y
WHERE x.id = y.id;
La deuxième réponse a été correcte, tout ce qui est nécessaire était des appels corrects vers ifnull code>
Je ne comprends pas le calcul derrière la colonne totale?
Avec des fonctions Windows, vous pouvez obtenir une seule requête de ligne pour renvoyer les résultatsset dont vous avez besoin. Malheureusement, MySQL ne les soutient pas.
@ NJZK2: Si vous regardez la première table, vous verrez que des correspondances totales avec les totaux pour tous les éléments contre
ID code>. Le mod ne semble pas avoir d'impact réel afin quetotal code> semble être une colonne redondante pour chaque enregistrement dans la deuxième table.@ njzk2 Vérifiez toutes les valeurs de 1 ID Vous obtenez l'idée de savoir comment 7 viennent .. Première rangée.
Pourquoi voudriez-vous conserver la colonne
mod code> dans les Restructions lorsqu'il transmet aucune information?