J'utilise Microsoft SQL SVR MGMT Studio 2008. Je n'ai pas accès à la création d'une table temporaire (la société restreint la possibilité de créer ou de modifier des tables) ou j'utiliserais cela pour résoudre ce problème.
J'ai utilisé avec succès une requête syndicale pour combiner les résultats de trois requêtes SELECT. Maintenant, j'essaie de résumer les résultats de l'Union. p>
Lorsque j'exécute la requête ci-dessous, je reçois: p> et ensuite lorsque je supprime le groupe par I GET: P> 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
5 Réponses :
Je n'ai pas accès à la création d'un Table temporaire (la société restreint capacité à créer ou modifier des tables) ou Je l'utiliserais pour résoudre ce problème problème. p>
Au lieu d'une table temporaire, essayez d'utiliser une variable de table: p>
xxx pré> une variable de table peut faire la plupart des éléments une table temporaire. P>
Comme Martin (maintenant supprimé) la réponse suggère, envisagez de donner à la sous-requête un alias, comme: p>
xxx pré> et dans votre sous-requête, le
ayant code> devrait probablement Soyez un
où code>: p>
xxx pré> blockQquote>
Vous devez alias votre table dérivée, vous devez également utiliser un groupe avec une clause ayant une clause.
SELECT q1.Period, q1.PCC, SUM(q1.BasicHits), SUM(q1.FareHits), SUM(q1.SearchHits) FROM (SELECT AAAPeriod AS Period, AAAFromPCC AS PCC, - SUM(AAABasic) AS BasicHits, - SUM(AAAFare) AS FareHits, - SUM(AAASearch) AS SearchHits FROM HitsAaa GROUP BY AAAPeriod, AAAFromPCC HAVING (AAAPeriod = N'2010-10') UNION ALL SELECT AAAPeriod AS Period, AAAtoPCC AS PCC, SUM(AAABasic) AS BasicHits, SUM(AAAFare) AS FareHits, SUM(AAASearch) AS SearchHits FROM HitsAaa GROUP BY AAAPeriod, AAAtoPCC HAVING (AAAPeriod = N'2010-10') UNION ALL SELECT AgtPeriod AS Period, AgtPcc AS PCC, SUM(AgtBasic) AS BasicHits, SUM(AgtFare) AS FareHits, SUM(AgtSearch) AS SearchHits FROM HitsAgent GROUP BY AgtPeriod, AgtPCC HAVING (AgtPeriod = N'2010-10')) q1 GROUP BY q1.Period, q1.PCC
SQL Server nécessite que vous définissez un alias de table pour une table dérivée / Vue en ligne:
SELECT x.period, x.pcc, SUM(x.BasicHits), SUM(x.FareHits), SUM(x.SearchHits) FROM (SELECT AAAPeriod AS Period, AAAFromPCC AS PCC, - SUM(AAABasic) AS BasicHits, - SUM(AAAFare) AS FareHits, - SUM(AAASearch) AS SearchHits FROM HitsAaa WHERE AAAPeriod = N'2010-10' GROUP BY aaaperiod, aaafrompcc UNION ALL SELECT AAAPeriod, AAAtoPCC, SUM(AAABasic), SUM(AAAFare), SUM(AAASearch) FROM HitsAaa WHERE AAAPeriod = N'2010-10' GROUP BY aaaperiod, aaafrompcc UNION ALL SELECT AgtPeriod, AgtPcc, SUM(AgtBasic), SUM(AgtFare), SUM(AgtSearch) FROM HitsAgent WHERE AgtPeriod = N'2010-10' GROUP BY agtperiod, agtpcc) AS x GROUP BY x.period, x.pcc
Merci!!! L'ajout de la désignation t et t a fonctionné. Merci à tous pour votre aide.
Changez votre première ligne en et la dernière ligne à p> Vous devez définir un alias de table (dans ce cas T) Pour les tables intérieures p> En outre, vous devez groupe par code> les requêtes internes p> p>
+1: Les alias de table ne doivent pas nécessairement être utilisés, mais SQL Server nécessite qu'ils soient définis pour des tables dérivées / des vues en ligne.
Sélectionnez R. "Artigo", R. "Dscription" comme "Descricao",
R. "CODIGO", R. "Clelle",
R. "iTMSGRPCOD", somme (r. "Qtd / kg") comme "qtd / kg", somme (r. "Valor") comme "Valor",
Somme (r. "Valor") / somme (r. "Qtd / kg") comme "PMVL"
à partir de (
Sélectionnez T1. "ItemCode" comme "Artigo", T1. "DSCRIPTION",
T0. "Codigo" comme "codigo", t0. "CardName" comme "client",
T3. "Itmsgrpcod", somme (T1. "Quantité") -1 comme "qtd / kg",
Somme (T1. "LINETOTAL") EM> -1 comme "Valor",
(Somme (T1. "LINETOTAL") / SUM (T1. "Quantité")) comme "PMVL"
à partir de
Orin T0 se jointure intérieure Rin1 T1 sur T0. "Docentry" = T1. "Docentry"
Rejoindre OITM T3 sur T1. "ItemCode" = T3. "ItemCode"
JOIN DE GAUCHE IBT1 T2 sur T0. "DOCENTRY" = T2. "BASEDENTRY" et T1. "ItemCode" = T2. "CoteCode" et T2. "Baselinnum" = T1. "Linénum"
où t0. "docdier"> = ('2021-03-19') et t0. "Docdate" Sélectionnez T1. "ItemCode" comme "Artigo", T1. "DSCRIPTION",
T0. "Codigo" comme "codigo", t0. "CardName" comme "client",
T3. "ITMSGRPCOD", somme (T1. "Quantité") comme "qtd / kg", somme (T1. "Linetotal") comme "Valor", (somme (T1. "LINETOTAL") / SUM (T1. "Quantité ")) comme" PMVL "
à partir de
OINV T0 Inner Rejoignez Inv1 T1 sur T0. "Docentry" = T1. "Docentry"
- Rejoindre Gauche OITM T3 sur T1. "ItemCode" = T3. "Code de carton"
Rejoindre Gauche OITM T3 sur T1. "itemCode" = T3. "CoteCode"
- Se jointure intérieure OITM T3 sur T3. "ItemCode" = T3. "Code de carton"
JOIS DE JOIN DE GAUCHE IBT1 T2 sur T0. "DOCENTRY" = T2. "BASEENTRY" et T1. "ItemCode" = T2. "CoteCode" et T2. "Baselinnum" = T1. "Linenum" P> where T0."DocDate" >= ('2021-03-19') and T0."DocDate" <= ('2021-03-19')
and T3."ItmsGrpCod" like '___'
group by T1."ItemCode", T1."Dscription", T0."CardCode", T0."CardName",T3."ItmsGrpCod"
) as R
group by R."Artigo", R."Dscription", R."Codigo", R."Cliente",R."ItmsGrpCod"
S'il vous plaît ne publiez pas uniquement le code comme réponse, mais fournissez également une explication de votre code et de la manière dont il résout le problème de la question. Les réponses avec une explication sont généralement plus utiles et de meilleure qualité, et sont plus susceptibles d'attirer des upvotes.
Les 2 premières questions sont les mêmes? (Et tous les trois manquent un groupe
par code>). Et votre table dérivée a besoin d'un alias de table.
Vous avez été correct que j'avais supprimé le groupe par erreur sur les sous-titres.