Comment le groupe par chaque jour en PL/SQL?
Im essayant d'obtenir des statistiques pour chaque jour avec PL/SQL.
Chaque jour ont plusieurs entrées, bukkets d'erreurs 🙂 je veux les regrouper par jour.
Ce que je suis actuellement en train de faire:
SELECT TO_CHAR(dateTime, 'DD') DAY, TO_CHAR(dateTime, 'MM') MONTH, errormessage
FROM log
WHERE (...)
GROUP BY MONTH, DAY, errormessage
Il en résulte ORA-00904: "JOUR": identifiant invalide (s'arrête sur le group by).
De l'aide? 😀
OriginalL'auteur Jason94 | 2012-04-12
Vous devez vous connecter pour publier un commentaire.
Les alias de colonne ne sont pas bons pour
GROUP BY
, vous avez besoin de la pleine expression.Heureux de vous aider, et vous devriez également vérifier Lukas @Eder 's réponse, dans certains cas, sa solution est préférable pour des raisons de lisibilité.
Merci pour les crédits 😉
OriginalL'auteur Erkan Haspulat
Votre problème est un problème de la portée. Le
GROUP BY
clause fait partie de la déclaration de l'expression de table et est ainsi évalué avant leSELECT
de la clause, c'est à dire la projection. Cela signifie que les alias ne sont pas disponibles au moment du groupement de temps. C'est une solutionc'est un autre:
Non-standard de comportement
Noter que certaines bases de données (y compris MySQL, PostgreSQL et autres) ne permettent de référencer les alias de colonne à partir de la projection dans le
GROUP BY
clause. En plus strictes dialectes SQL (comme Oracle) qui ne devrait pas être possible, bien queOriginalL'auteur Lukas Eder
vous ne pouvez pas utiliser des alias de groupe par
OriginalL'auteur Raphaël Althaus