Semblable à Cette question < / a>, je dois regrouper un grand nombre d'enregistrements en "godets" de 1 heure. Par exemple, disons que j'ai une table de commande typique avec une date d'heure attachée à chaque commande. Et je veux voir le nombre total de commandes par heure. Donc, j'utilise SQL grossièrement comme ceci: Le problème est que s'il n'y a pas de commandes dans un "godet" de 1 heure donné, aucune ligne n'est émise dans le jeu de résultats. J'aimerais que les Resulatsse aient une rangée pour chacune des 24 heures, mais si aucune commande n'a été faite au cours d'une heure donnée, enregistrez simplement le nombre de commandes comme o. P> Y a-t-il un moyen de faire ceci dans une seule requête? p> Voir aussi Obtenir des statistiques horaires à l'aide de SQL a>. p> p>
3 Réponses :
Vous devez avoir une table prépondule (ou une fonction renvoyant un ensemble de résultats de table) pour rejoindre, contenant toutes les emplacements de 1 heure que vous souhaitez dans votre résultat.
alors vous faites une jointure extérieure avec Cela, et vous devriez les faire tous. P>
quelque chose comme ceci: p>
Je crois que vous pouvez également remplacer onehourslots code> avec quelque chose comme (Sélectionnez 0 comme Slot_hour Union Select 1 comme Slot_hour Union ..) Code> - Seulement si vous étiez mort pour le garder dans un Requête simple si - Yuck: p
Vous pouvez faire cela encore plus facile des utilisateurs généraux_series () (en supposant que vous êtes sur Postgers, que les balises disent que vous êtes, mais l'exemple de requête ne fonctionnerait pas là ..)
Créer une table d'heures, a persisté ou même synthétisé "à la volée":
Certaines des réponses précédentes recommandent d'utiliser une table d'heures et de la renseigner à l'aide d'une requête union; Cela peut être mieux fait avec une expression de table commune:
+1 pour le tour Sys.Objects. Un jour, ils expédieront une version qui ne montre que des objets utilisateur avec accès à Sys.Objects et déplacez les objets système dans SYS.All_Objects, Jut pour ruiner vos scripts lol
J'espère que ce sera la version qui a une table de chiffres ( sqlserver2000.databases.aspfaq.com/... ). Vous n'aurez donc pas besoin de hacks comme celui-ci
Cela aiderait à savoir quelle version de PG que vous utilisez.