SOMA DE SUBCONSULTA NO SQL SERVER

 Tópico anterior Próximo tópico Novo tópico

SOMA DE SUBCONSULTA NO SQL SERVER

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#490798 - 17/10/2019 09:30:17

HIDDEN
GOIANIA
Cadast. em:Julho/2009


Bom dia pessoal. Preciso fazer a soma de uma subconsulta em uma query SQL Server:


SELECT
    OCRD.CardName
    ,Total=SUM(OINV.DocTotal+OINV.DpmAmnt)
    ,Despesas=SUM(OINV.TotalExpns)
    ,Descontos=SUM(OINV.DiscSum)
    ,Impostos=SUM((SELECT SUM(INV4.TaxSum) FROM INV4 WHERE INV4.DocEntry=OINV.DocEntry))
FROM
    OINV
    INNER JOIN OCRD ON OCRD.CardCode=OINV.CardCode
WHERE
    OINV.DocTotal>0
    AND OINV.DocDate BETWEEN []2019-09-01[] AND []2019-09-30[]            
    AND OINV.BPLId IN (1,3,4)
    AND OINV.DocType IN ([]I[],[]S[])
    AND OINV.CANCELED= []N[]
    AND OINV.DocStatus IN ([]O[],[]C[])
GROUP BY
    OCRD.CardName
ORDER BY
    OCRD.CardName


Bom, evidente que o cdigo acima dar erro. S coloquei para ilustrar o que eu quero. Preciso somar a coluna impostos (erro: [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]No possvel executar uma funo de agregao em uma expresso que contenha uma agregao ou uma subconsulta).

Algum tem alguma ideia de como fazer a soma dessa sub?



#490799 - 17/10/2019 09:33:18

HIDDEN
GOIANIA
Cadast. em:Julho/2009


Uma forma que chega perto do que eu preciso, mas que no me atende ainda:

SELECT
    OCRD.CardName
    ,Total=SUM(OINV.DocTotal+OINV.DpmAmnt)
    ,Despesas=SUM(OINV.TotalExpns)
    ,Descontos=SUM(OINV.DiscSum)
    ,Impostos=(SELECT SUM(INV4.TaxSum) FROM INV4 WHERE INV4.DocEntry=OINV.DocEntry)
FROM
    OINV
    INNER JOIN OCRD ON OCRD.CardCode=OINV.CardCode
WHERE
    OINV.DocTotal>0
    AND OINV.DocDate BETWEEN []2019-09-01[] AND []2019-09-30[]            
    AND OINV.BPLId IN (1,3,4)
    AND OINV.DocType IN ([]I[],[]S[])
    AND OINV.CANCELED= []N[]
    AND OINV.DocStatus IN ([]O[],[]C[])
GROUP BY
    OCRD.CardName
    ,OINV.DocEntry
ORDER BY
    OCRD.CardName

    
Tirei o SUM e inseri OINV.DocEntry em GroupBy. Mas a ele no soma a coluna Impostos. Mas eu realmente preciso da soma dessa coluna.



#490800 - 17/10/2019 09:42:32

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Voc pode sim fazer join com uma subquery:

SELECT
    OCRD.CardName
    ,Total=SUM(OINV.DocTotal+OINV.DpmAmnt)
    ,Despesas=SUM(OINV.TotalExpns)
    ,Descontos=SUM(OINV.DiscSum)
    ,Impostos=INV4.TASXUM
FROM
    OINV
    INNER JOIN OCRD ON OCRD.CardCode=OINV.CardCode
    INNER JOIN (SELECT SUM(INV4.TaxSum) TAXSUM FROM INV4 GROUP BY DOCENTRY) AS INV4sub ON OINV.DocEntry = INV4.DocEntry
WHERE
    OINV.DocTotal>0
    AND OINV.DocDate BETWEEN []2019-09-01[] AND []2019-09-30[]            
    AND OINV.BPLId IN (1,3,4)
    AND OINV.DocType IN ([]I[],[]S[])
    AND OINV.CANCELED= []N[]
    AND OINV.DocStatus IN ([]O[],[]C[])
GROUP BY
    OCRD.CardName
    ,OINV.DocEntry
ORDER BY
    OCRD.CardName


_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#490801 - 17/10/2019 09:43:14

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
No sei se o que fiz est []copia, cola e pronto[], mas a idia aquilo ali...

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#490802 - 17/10/2019 09:54:58

HIDDEN
GOIANIA
Cadast. em:Julho/2009


Da um erro de associao:

> [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]O identificador de vrias partes []INV4.DocEntry[] no pde ser associado. (4104)
  [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]O identificador de vrias partes []INV4.TaxSum[] no pde ser associado. (4104)

Mas entendi a lgica. J um caminho.



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por HIDDEN em 17/07/2020 08:41:24