Comment puis-je combiner/fusionner les colonnes de deux résultats de la requête SQL?
J'ai un ensemble de données dans une table nommée BWHourlyReadings
, par exemple:
ServiceID Hour InputOctets OutputOctets
========= ==== =========== =================
27222 1 383088 804249
27222 2 270529 688683
27222 3 247251 290124
... up to 24 hours of data
27222 24 236053 239165
28900 1 883011 914249
28900 3 444251 891124
... up to 24 hours of data
28900 24 123053 452165
Pour chaque jour, jusqu'à 24 lectures par ServiceID
.
J'en ai autant que deux PIVOT
requêtes, l'une pour la InputOctets
colonne et une seule pour le OutputOctets
colonne (seul indiqué ici par souci de concision):
-- Replace HourXIn with HourXOut for OutputOctets
SELECT ServiceID, [1] AS 'Hour1In', [2] AS 'Hour2In', [3] AS 'Hour3In', ...
FROM
(
SELECT
ServiceID,
Hour,
TotalInputOctets -- Other query has OutputOctets here instead
FROM
BWHourlyReadings
) AS bw
PIVOT
(
MAX(TotalInputOctets) -- Other query has OutputOctets here instead
FOR [Hour] IN ([1], [2], [3], ... [24])
) AS pvt
Cela me donne mon InputOctets
et OutputOctets
séparée en deux ensembles de résultats, par exemple:
La PIVOT
résultat de la requête sur InputOctets
:
ServiceID Hour1In Hour2In Hour3In . Hour24In
========= ======= ======= ======= ========
27222 383088 270529 247251 236053
28900 883011 0 444251 123053
La PIVOT
résultat de la requête sur OutputOctets
:
ServiceID Hour1Out Hour2Out Hour3Out .. Hour24Out
========= ======== ======== ======== ========
27222 804249 688683 290124 239165
28900 914249 0 891124 452165
J'ai besoin de produire un rapport comme ceci:
ServiceID Hour1In Hour1Out Hour2In Hour2Out Hour3In Hour3Out .. Hour24In Hour24Out
========= ======= ======== ======= ======== ======= ======== ======= ========
27222 383088 804249 270529 688683 247251 290124 236053 239165
28900 883011 914249 0 0 444251 891124 123053 452165
Comment puis-je fusionner les deux résultats de la requête pour produire le rapport ci-dessus?
Mise à jour:
J'ai mis à jour les données dans le bon format de rapport pour faire correspondre les données de la table source exemple. Mes excuses pour la confusion.
OriginalL'auteur Kev | 2009-06-29
Vous devez vous connecter pour publier un commentaire.
Je n'ai aucune idée de comment vous calculez votre HourX(In|Out) de votre (Entrée|Sortie)Octets, mais la suite pourrait fonctionner pour vous
Testé avec les données suivantes.
Je pense que vous m'avez mal compris. La requête doit produire les colonnes dont vous avez besoin. Je ne savais pas comment vous obtenez à partir de [InputOctet] 383088 & [OutputOctet] 804249 [Hour1In] 350230878.
Excuses Lieven, j'ai mis à jour les données et re-trémoussaient la question un peu l'espoir de le rendre plus clair.
dans ce cas, avez-vous essayé la requête? Vous pourriez être dedans pour une grande surprise (à moins que "j'ai" mal compris offcourse).
Ah...vous avez changé votre requête...j'ai été intrigué par l'original...je vais lui donner un aller. Des acclamations.
OriginalL'auteur Lieven Keersmaekers
utiliser de l'union ou de l'union de tous pour fusionner les 2 résultats.
OriginalL'auteur Mladen Prajdic
eh bien, vous avez deux requêtes... donc, je pense que vous pouvez simplement utiliser ces deux requêtes comme "tables" dans un wrapper de la requête et de se joindre à eux
ou l'utilisation d'une JOINTURE INTERNE, si vous préférez. c'est à peu près le même que pour faire deux vues de vos requêtes, puis de rejoindre ces points de vue.
PS: PAS TESTÉ ... serait de travailler avec droite SQL, mais je n'ai pas de réelle expérience avec les tableaux croisés dynamiques et qui pourrait être le raccrocher
OriginalL'auteur Nick Franceschina
Créer un @variable de table et de mettre toutes les colonnes du tableau et insérer jela toutes les valeurs dans ce tableau et enfin sélectionner à partir de cette table.
signifie que si vous voulez 24 colonnes puis créer une table avec 24 de la colonne et insérer une par une ligne dans cette
OriginalL'auteur KuldipMCA
Cette réponse vient de l'Agile /YAGNI école de requêtes SQL.....
Le rapport absolument être dans ce format? Plus simple, plus facile à gérer requête peut renvoyer les informations correctes, il serait tout simplement présenté un peu différemment. La requête suivante renvoie les données dans un format légèrement différent?
OriginalL'auteur Gais