none
Erro no Select com Group By RRS feed

  • 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

    sexta-feira, 11 de julho de 2014 14:51

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
    sexta-feira, 11 de julho de 2014 15:32

Todas as Respostas

  • Bom dia Newton,

    Qual o erro apresentado quando o 'Group By' é utilizado?


    Att, Bruno Silva.

    sexta-feira, 11 de julho de 2014 15:06
  • 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.
    sexta-feira, 11 de julho de 2014 15:10
  • 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
    sexta-feira, 11 de julho de 2014 15:32
  • Bruno,

    Obrigado, vou seguir suas orientações e marco como resposta.

    Grato, mais uma vez.

    Newton Costa

    sexta-feira, 11 de julho de 2014 16:41