Usuário com melhor resposta
Erro no Select com Group By

Pergunta
-
Bom dia
Preciso de um relatório que totalize as vendas por código de item. O código abaixo apresenta erro quando utilizo GROUP BY porém, se tiro esta opção não consigo sumarizar a qtd vendida e apresentar apenas a lina com o código e o total.
Mensagem 8120, Nível 16, Estado 1, Linha 3
A coluna 'it-nota-fisc.dt-emis-nota' é inválida na lista de seleção porque não está contida em uma função de agregação nem na cláusula GROUP BY.SELECT
[it-nota-fisc].[dt-emis-nota]
,[it-nota-fisc].[nr-nota-fis]
,item.[desc-item]
,item.[codigo-refer]
,[it-nota-fisc].[qt-faturada-1]
,[it-nota-fisc].[vl-preuni]
,[it-nota-fisc].[vl-tot-item]
,repres.[nome-abrev]
,repres.cgc as cgcvendedor
FROM
[it-nota-fisc]
INNER JOIN [nota-fiscal]
ON [it-nota-fisc].[cod-estabel] = [nota-fiscal].[cod-estabel]
AND [it-nota-fisc].serie = [nota-fiscal].serie
AND [it-nota-fisc].[nr-nota-fis] = [nota-fiscal].[nr-nota-fis]
INNER JOIN item
ON [it-nota-fisc].[it-codigo] = item.[it-codigo]
INNER JOIN repres
ON [nota-fiscal].[cod-rep] = repres.[cod-rep]
and [it-nota-fisc].[dt-emis-nota] >= '30-06-2014'
and [it-nota-fisc].[dt-emis-nota] <= '05-07-2014'
and item.[IT-CODIGO] like 'AOC' + '%'
and ([it-nota-fisc].[nat-operacao] like concat('5101','%')
or [it-nota-fisc].[nat-operacao] like concat('5102','%')
or [it-nota-fisc].[nat-operacao] like concat('5108','%')
or [it-nota-fisc].[nat-operacao] like concat('6101','%')
or [it-nota-fisc].[nat-operacao] like concat('6102','%')
or [it-nota-fisc].[nat-operacao] like concat('6107','%')
or [it-nota-fisc].[nat-operacao] like concat('6108','%')
or [it-nota-fisc].[nat-operacao] like concat('5405','%')
or [it-nota-fisc].[nat-operacao] like concat('6405','%')
or [it-nota-fisc].[nat-operacao] like concat('6404','%')
or [it-nota-fisc].[nat-operacao] like concat('5910','%')
or [it-nota-fisc].[nat-operacao] like concat('5119','%')
or [it-nota-fisc].[nat-operacao] like concat('6119','%')
or [it-nota-fisc].[nat-operacao] like concat('6910','%'))
GROUP BY [it-nota-fisc].[it-codigo]
ORDER BY [it-nota-fisc].[dt-emis-nota]Grato Pela ajuda
Respostas
-
Newton,
Tinha compreendido errado o problema.
Acontece que ao utilizar o Group By, você agrupa as linhas baseado em semelhanças entre elas. Em sua query estou vendo que não é utilizado nenhuma função de agregação (count, sum, max, etc).
Sugiro o seguinte para tentar resolver o questionamento:
1 - Mude o seu Select
SELECT [it-nota-fisc].[dt-emis-nota] ,[it-nota-fisc].[nr-nota-fis] ,item.[desc-item] ,item.[codigo-refer] ,[it-nota-fisc].[qt-faturada-1] ,SUM([it-nota-fisc].[vl-preuni]) ,SUM([it-nota-fisc].[vl-tot-item]) ,repres.[nome-abrev] ,repres.cgc as cgcvendedor
2 - Mude a cláusula do Group By
GROUP BY [it-nota-fisc].[dt-emis-nota] ,[it-nota-fisc].[nr-nota-fis] ,item.[desc-item] ,item.[codigo-refer] ,[it-nota-fisc].[qt-faturada-1] ,repres.[nome-abrev] ,repres.cgc as cgcvendedor
Observação: O erro indicado tem o objetivo de alertar que ao utilizar o Group By cada coluna do select tem que estar definida nele, com exceção das funções de agregação, que podem ser opcionais conforme a necessidade.
Att, Bruno Silva.
- Marcado como Resposta Newton Costa-BA segunda-feira, 14 de julho de 2014 12:32
Todas as Respostas
-
-
-
Newton,
Tinha compreendido errado o problema.
Acontece que ao utilizar o Group By, você agrupa as linhas baseado em semelhanças entre elas. Em sua query estou vendo que não é utilizado nenhuma função de agregação (count, sum, max, etc).
Sugiro o seguinte para tentar resolver o questionamento:
1 - Mude o seu Select
SELECT [it-nota-fisc].[dt-emis-nota] ,[it-nota-fisc].[nr-nota-fis] ,item.[desc-item] ,item.[codigo-refer] ,[it-nota-fisc].[qt-faturada-1] ,SUM([it-nota-fisc].[vl-preuni]) ,SUM([it-nota-fisc].[vl-tot-item]) ,repres.[nome-abrev] ,repres.cgc as cgcvendedor
2 - Mude a cláusula do Group By
GROUP BY [it-nota-fisc].[dt-emis-nota] ,[it-nota-fisc].[nr-nota-fis] ,item.[desc-item] ,item.[codigo-refer] ,[it-nota-fisc].[qt-faturada-1] ,repres.[nome-abrev] ,repres.cgc as cgcvendedor
Observação: O erro indicado tem o objetivo de alertar que ao utilizar o Group By cada coluna do select tem que estar definida nele, com exceção das funções de agregação, que podem ser opcionais conforme a necessidade.
Att, Bruno Silva.
- Marcado como Resposta Newton Costa-BA segunda-feira, 14 de julho de 2014 12:32
-