Somme d'une requête union
Je suis à l'aide de Microsoft SQL Svr Mgmt Studio 2008. Je n'ai pas accès à la création d'une table temporaire (société limite la capacité de créer ou de modifier des tables) ou je voudrais utiliser que pour résoudre ce problème.
J'ai utilisé avec succès une requête union de combiner les résultats de trois requêtes select. Maintenant, je suis en train de faire la somme des résultats de l'union.
Lorsque j'exécute la requête ci-dessous-je recevoir:
Incorrect syntax near the keyword 'GROUP'
Et puis quand j'ai supprimer le groupe par-je obtenir:
Incorrect syntax near ')'
Voici ma requête:
Select Period, PCC, SUM(BasicHits), SUM(FareHits), SUM(SearchHits)
From (
SELECT AAAPeriod AS Period,
AAAFromPCC AS PCC,
- SUM(AAABasic) AS BasicHits,
- SUM(AAAFare) AS FareHits,
- SUM(AAASearch) AS SearchHits
FROM HitsAaa
HAVING (AAAPeriod = N'2010-10')
UNION ALL
SELECT AAAPeriod,
AAAtoPCC,
SUM(AAABasic),
SUM(AAAFare),
SUM(AAASearch)
FROM HitsAaa
HAVING (AAAPeriod = N'2010-10')
UNION ALL
SELECT AgtPeriod,
AgtPcc,
SUM(AgtBasic),
SUM(AgtFare),
SUM(AgtSearch)
FROM HitsAgent
HAVING (AgtPeriod = N'2010-10')
)GROUP BY Period, PCC
Je n'ai pas été en mesure de trouver une solution à ce sur une des questions précédentes.
Les 2 premières requêtes sont les mêmes? (Et tous les trois sont absents d'un
Vous aviez raison j'avais supprimé le groupe par erreur sur les sous-requêtes.
GROUP BY
). Et votre table dérivée besoin d'un alias de la table.Vous aviez raison j'avais supprimé le groupe par erreur sur les sous-requêtes.
OriginalL'auteur ksh7 | 2011-04-10
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de faire un alias de votre table dérivée, vous devez également utiliser un groupe avec une clause having.
OriginalL'auteur John Hartsock
SQL Server nécessite de définir un alias de la table pour une table dérivée/inline vue:
OriginalL'auteur OMG Ponies
Au lieu d'une table temporaire, essayez d'utiliser une variable de table:
Une variable de table peut faire la plupart des choses une table temporaire peut.
Comme Martin (aujourd'hui supprimé) réponse suggère d'envisager de donner à la sous-requête d'un alias, comme:
Et dans votre sous-requête, le
having
devrait probablement être unwhere
:OriginalL'auteur Andomar
Changer votre première ligne de
et la dernière ligne de
Vous avez besoin de définir un alias de la table (dans ce cas, T) à l'intérieur de tables
Aussi, vous avez besoin de
GROUP BY
l'intérieur des requêtesOriginalL'auteur Jose Rui Santos