Agrupar consulta no SQL

SQL Server

SQL

18/10/2017

Bom dia pessoal, estou tentando gerar um relatório e desenvolvi a seguinte consulta:

SELECT PRO.MARCA,REG.NOMEREG,
ROUND(ITE.QTDNEG * VLRUNIT,2)AS "VALOR TOTAL"

FROM TGFITE ITE, TGFPRO PRO, TGFCAB CAB,TGFPAR PAR,TGFVEN VEN,TSIREG REG

WHERE ITE.CODPROD = PRO.CODPROD
AND REG.CODREG = VEN.CODREG
AND CAB.CODVEND = VEN.CODVEND
AND ITE.NUNOTA = CAB.NUNOTA
AND CAB.CODEMP = 1
AND CAB.CODTIPOPER IN (310,311)
AND CAB.DTNEG BETWEEN '17/10/2017' AND '18/10/2017'
AND PRO.MARCA = 'PETROBRAS'
AND REG.CODREG = 1005
GROUP BY PRO.MARCA,QTDNEG,VLRUNIT,REG.NOMEREG
ORDER BY MARCA

O resultado retornado é o seguinte:

1 PETROBRAS 5 JOAO APOLINARIO 863,3
2 PETROBRAS 5 JOAO APOLINARIO 217,75
3 PETROBRAS 5 JOAO APOLINARIO 213,05
4 PETROBRAS 5 JOAO APOLINARIO 837,45
5 PETROBRAS 5 JOAO APOLINARIO 468,21
6 PETROBRAS 5 JOAO APOLINARIO 147,93
7 PETROBRAS 5 JOAO APOLINARIO 794,8

Eu preciso que retorne apenas uma linha com o valor total da venda por MARCA/REGIÃO/VALOR, alguém pode me ajudar?
Bruno Santos

Bruno Santos

Curtidas 0

Respostas

Luiz Santos

Luiz Santos

18/10/2017

Bom dia Lubrilages.

Já tentou colocar um SUM na frente do ROUND?

SUM(ROUND(ITE.QTDNEG * VLRUNIT,2)) AS "VALOR TOTAL"


Minha duvida fica por conta dos números na frente.

Estou supondo que são os números de linha, que o SQL Retorna.

Grande abraço
GOSTEI 0
Bruno Santos

Bruno Santos

18/10/2017

Boa tarde, sim os números da frente são as linhas do SQL. Referente ao SUM se eu usar aparece um valor muito alto que não sei de onde realmente vem, em fim mudei a consulta e não resolveu, continua como antes.
--------------------------------------------------------------------------
CONSULTA:
-------------------------------------------------------------------------
SELECT PRO.MARCA,REG.NOMEREG,
(ROUND(ITE.QTDNEG * VLRUNIT,2)) AS "VALOR TOTAL"
FROM TGFITE ITE, TGFPRO PRO, TGFCAB CAB,TGFVEN VEN,TSIREG REG
WHERE ITE.CODPROD = PRO.CODPROD
AND REG.CODREG = VEN.CODREG
AND CAB.CODVEND = VEN.CODVEND
AND ITE.NUNOTA = CAB.NUNOTA
AND CAB.CODEMP = 1
AND CAB.CODTIPOPER IN (310,311)
AND CAB.DTNEG = '17/10/2017'
AND PRO.MARCA = 'PETROBRAS'
AND REG.CODREG = 1005
GROUP BY PRO.MARCA,QTDNEG,VLRUNIT,REG.NOMEREG
ORDER BY MARCA
--------------------------------------------------------------------------------------
RESULTADO
-------------------------------------------------------------------------------------
MARCA NOMEREG VALOR TOTAL
---------- -------------------- -----------
PETROBRAS 5 JOAO APOLINARIO 863,3
PETROBRAS 5 JOAO APOLINARIO 217,75
PETROBRAS 5 JOAO APOLINARIO 213,05
PETROBRAS 5 JOAO APOLINARIO 837,45
PETROBRAS 5 JOAO APOLINARIO 468,21
PETROBRAS 5 JOAO APOLINARIO 147,93
PETROBRAS 5 JOAO APOLINARIO 794,8


AGUARDO...
GOSTEI 0
Luiz Santos

Luiz Santos

18/10/2017

Lubrilages

Faremos diferente então.
Do jeito que te passei, ele faria o calculo e depois somaria.

Vamos fazer o contratio, vamos somar e depois fazer o calculo.

(ROUND(SUM(ITE.QTDNEG) * SUM(VLRUNIT),2)) AS "VALOR TOTAL"
GOSTEI 0
Bruno Santos

Bruno Santos

18/10/2017

Isso mesmo, fiz desse jeito e deu certo, muito obrigado pela ajuda...Era isso mesmo que eu queria...
GOSTEI 0
POSTAR