0
Peut s'il vous plaît quelqu'un m'aider à trier cette erreur. J'ai une requête de somme de somme, en exécutant la requête j'ai une erreur montrée ci-dessous.
Sum (Sum()) dans SQL
select distinct
t1.whscode,
'Invoice',
count(distinct t1.DocEntry),
sum(
case when t0.DiscPrcnt>0 and t0.DpmAmnt>0 then
(sum(t1.LineTotal)-t0.DiscPrcnt)-t0.DpmAmnt
else
(sum(t1.LineTotal)-t0.DpmAmnt)
end
)
from
oinv t0 (NOLOCK)
inner join inv1 t1 (NOLOCK)
on t0.docentry=t1.docentry
where
t0.DocDate between '10-25-16' and '10-25-16'
and t1.whscode='tamst'
group by
t1.whscode
erreur:
Impossible d'effectuer une fonction d'agrégation sur une expression contenant un agrégat ou une sous-requête.
Si vous prenez un pas en arrière « SQL Server refuse d'exécuter ma requête » à « Ce que je veux accomplir », pourriez-vous expliquer le raisonnement derrière ça? Il n'y aura jamais qu'un seul groupe en jeu d'un point de vue agrégé que SUM regarde alors "SUM (SUM (...) n'a vraiment aucun sens. Peut-être que tout ce que vous voulez faire est de supprimer le SUM (...) de l'intérieur l'expression de cas? –
Notez que le 'distinct 'n'est pas nécessaire lorsque vous groupez déjà des enregistrements – Bouke
Un peu hors sujet, mais vous devriez lire cet article avant de continuer à joncher vos questions avec des conseils NOLOCK.Il est beaucoup plus sinistre que la plupart des gens réalisent. //blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –