none
Erro com Group by na consulta RRS feed

  • Pergunta

  • Prezados,

    Estou enfrentando um "problema" com a consulta abaixo:

    SELECT 
    FLAN.MESDECOMPETENCIA AS REFERENCIA,
    FLAN.DATAVENCIMENTO AS VENCTO,
    FLAN.DATAPAG AS PAGTO, 
    FLAN.VALORORIGINAL AS MENSAL,
    FLAN.VALORP1 AS BOLSA,
    FLAN.VALORMULTA AS ACRESCIMOS,
    FLAN.VALORDESCONTO AS DESCONTO,
    FLAN.VALORJUROS AS JUROS,
    FLAN.VALORBAIXADO AS VALOR_PAGO,
    SUM(FLAN.VALORORIGINAL-FLAN.VALOROP1+FLAN.VALORJUROS+FLAN.VALORMULTA) AS DEVIDO,
    SPARCELA.RA
    
    FROM 
    FLAN (NOLOCK)
    
    LEFT JOIN FCFO (NOLOCK) ON
    FLAN.CODCOLCFO=FCFO.CODCOLIGADA AND
    FLAN.CODCFO=FCFO.CODCFO
    
    LEFT JOIN SLAN (NOLOCK) ON
    FLAN.IDLAN=SLAN.IDLAN AND
    FLAN.CODCOLIGADA=SLAN.CODCOLIGADA
    
    LEFT JOIN SPARCELA (NOLOCK) ON
    SLAN.CODCOLIGADA=SPARCELA.CODCOLIGADA AND
    SLAN.IDPARCELA=SPARCELA.IDPARCELA
    
    LEFT JOIN SRESPONSAVEL (NOLOCK) ON
    SPARCELA.CODCOLIGADA=SRESPONSAVEL.CODCOLIGADA AND
    SPARCELA.IDPARCELA=SRESPONSAVEL.IDPARCELA
    
    LEFT JOIN SALUNO (NOLOCK) ON
    SPARCELA.CODCOLIGADA=SALUNO.CODCOLIGADA AND
    SPARCELA.RA=SALUNO.RA
    
    LEFT JOIN PPESSOA (NOLOCK) ON
    SALUNO.CODPESSOA=PPESSOA.CODIGO
    
    WHERE 
    SPARCELA.CODSERVICO IN (1,10,15,22,25,26,27,28,29,3,30,31,32,8,9) AND
    FCFO.NOMEFANTASIA LIKE '%'+(:NOME_S)+'%' AND
    SPARCELA.RA LIKE :ESPELHO#1 AND
    FLAN.DATAVENCIMENTO >= :DATAINICIAL_D AND
    FLAN.DATAVENCIMENTO <= :DATAFINAL_D AND
    FLAN.STATUSLAN=1
    
    GROUP BY FLAN.DATAVENCIMENTO,SPARCELA.RA
    ORDER BY FLAN.DATAVENCIMENTO,SPARCELA.RA

    e msg de erro é essa:

    Mensagem 8120, Nível 16, Estado 1, Linha 3
    Column 'FLAN.MESDECOMPETENCIA' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

    Poderiam me ajudar?

    Obrigado.

    quarta-feira, 20 de fevereiro de 2013 14:25

Respostas

  • Chedisson,

    A partir do momento em que voce coloca ao menos uma função de agregação na seu select ( No caso o SUM), todas as outras colunas que não estão em nenhuma função devem estar obrigatoriamente no group by. tente este select:

    SELECT

    FLAN

    .MESDECOMPETENCIA AS REFERENCIA,

    FLAN

    .DATAVENCIMENTO AS VENCTO,

    FLAN

    .DATAPAG AS PAGTO,

    FLAN

    .VALORORIGINAL AS MENSAL,

    FLAN

    .VALORP1 AS BOLSA,

    FLAN

    .VALORMULTA AS ACRESCIMOS,

    FLAN

    .VALORDESCONTO AS DESCONTO,

    FLAN

    .VALORJUROS AS JUROS,

    FLAN

    .VALORBAIXADO AS VALOR_PAGO,

    SUM

    (FLAN.VALORORIGINAL-FLAN.VALOROP1+FLAN.VALORJUROS+FLAN.VALORMULTA) AS DEVIDO,

    SPARCELA

    .RA

    FROM

    FLAN

    (NOLOCK)

    LEFT

    JOIN FCFO (NOLOCK) ON

    FLAN

    .CODCOLCFO=FCFO.CODCOLIGADA AND

    FLAN

    .CODCFO=FCFO.CODCFO

    LEFT

    JOIN SLAN (NOLOCK) ON

    FLAN

    .IDLAN=SLAN.IDLAN AND

    FLAN

    .CODCOLIGADA=SLAN.CODCOLIGADA

    LEFT

    JOIN SPARCELA (NOLOCK) ON

    SLAN

    .CODCOLIGADA=SPARCELA.CODCOLIGADA AND

    SLAN

    .IDPARCELA=SPARCELA.IDPARCELA

    LEFT

    JOIN SRESPONSAVEL (NOLOCK) ON

    SPARCELA

    .CODCOLIGADA=SRESPONSAVEL.CODCOLIGADA AND

    SPARCELA

    .IDPARCELA=SRESPONSAVEL.IDPARCELA

    LEFT

    JOIN SALUNO (NOLOCK) ON

    SPARCELA

    .CODCOLIGADA=SALUNO.CODCOLIGADA AND

    SPARCELA

    .RA=SALUNO.RA

    LEFT

    JOIN PPESSOA (NOLOCK) ON

    SALUNO

    .CODPESSOA=PPESSOA.CODIGO

    WHERE

    SPARCELA

    .CODSERVICO IN (1,10,15,22,25,26,27,28,29,3,30,31,32,8,9) AND

    FCFO

    .NOMEFANTASIA LIKE '%'+(:NOME_S)+'%' AND

    SPARCELA

    .RA LIKE :ESPELHO#1 AND

    FLAN

    .DATAVENCIMENTO >= :DATAINICIAL_D AND

    FLAN

    .DATAVENCIMENTO <= :DATAFINAL_D AND

    FLAN

    .STATUSLAN=1

    GROUP

    BY FLAN.MESDECOMPETENCIA,

    FLAN

    .DATAVENCIMENTO,

    FLAN

    .DATAPAG,

    FLAN

    .VALORORIGINAL,

    FLAN

    .VALORP1,

    FLAN

    .VALORMULTA,

    FLAN

    .VALORDESCONTO,

    FLAN

    .VALORJUROS,

    FLAN

    .VALORBAIXADO,

    SPARCELA

    .RA

    ORDER

    BY FLAN.DATAVENCIMENTO,SPARCELA.RA


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    quarta-feira, 20 de fevereiro de 2013 14:36
    Moderador

Todas as Respostas

  • Chedisson,

    A partir do momento em que voce coloca ao menos uma função de agregação na seu select ( No caso o SUM), todas as outras colunas que não estão em nenhuma função devem estar obrigatoriamente no group by. tente este select:

    SELECT

    FLAN

    .MESDECOMPETENCIA AS REFERENCIA,

    FLAN

    .DATAVENCIMENTO AS VENCTO,

    FLAN

    .DATAPAG AS PAGTO,

    FLAN

    .VALORORIGINAL AS MENSAL,

    FLAN

    .VALORP1 AS BOLSA,

    FLAN

    .VALORMULTA AS ACRESCIMOS,

    FLAN

    .VALORDESCONTO AS DESCONTO,

    FLAN

    .VALORJUROS AS JUROS,

    FLAN

    .VALORBAIXADO AS VALOR_PAGO,

    SUM

    (FLAN.VALORORIGINAL-FLAN.VALOROP1+FLAN.VALORJUROS+FLAN.VALORMULTA) AS DEVIDO,

    SPARCELA

    .RA

    FROM

    FLAN

    (NOLOCK)

    LEFT

    JOIN FCFO (NOLOCK) ON

    FLAN

    .CODCOLCFO=FCFO.CODCOLIGADA AND

    FLAN

    .CODCFO=FCFO.CODCFO

    LEFT

    JOIN SLAN (NOLOCK) ON

    FLAN

    .IDLAN=SLAN.IDLAN AND

    FLAN

    .CODCOLIGADA=SLAN.CODCOLIGADA

    LEFT

    JOIN SPARCELA (NOLOCK) ON

    SLAN

    .CODCOLIGADA=SPARCELA.CODCOLIGADA AND

    SLAN

    .IDPARCELA=SPARCELA.IDPARCELA

    LEFT

    JOIN SRESPONSAVEL (NOLOCK) ON

    SPARCELA

    .CODCOLIGADA=SRESPONSAVEL.CODCOLIGADA AND

    SPARCELA

    .IDPARCELA=SRESPONSAVEL.IDPARCELA

    LEFT

    JOIN SALUNO (NOLOCK) ON

    SPARCELA

    .CODCOLIGADA=SALUNO.CODCOLIGADA AND

    SPARCELA

    .RA=SALUNO.RA

    LEFT

    JOIN PPESSOA (NOLOCK) ON

    SALUNO

    .CODPESSOA=PPESSOA.CODIGO

    WHERE

    SPARCELA

    .CODSERVICO IN (1,10,15,22,25,26,27,28,29,3,30,31,32,8,9) AND

    FCFO

    .NOMEFANTASIA LIKE '%'+(:NOME_S)+'%' AND

    SPARCELA

    .RA LIKE :ESPELHO#1 AND

    FLAN

    .DATAVENCIMENTO >= :DATAINICIAL_D AND

    FLAN

    .DATAVENCIMENTO <= :DATAFINAL_D AND

    FLAN

    .STATUSLAN=1

    GROUP

    BY FLAN.MESDECOMPETENCIA,

    FLAN

    .DATAVENCIMENTO,

    FLAN

    .DATAPAG,

    FLAN

    .VALORORIGINAL,

    FLAN

    .VALORP1,

    FLAN

    .VALORMULTA,

    FLAN

    .VALORDESCONTO,

    FLAN

    .VALORJUROS,

    FLAN

    .VALORBAIXADO,

    SPARCELA

    .RA

    ORDER

    BY FLAN.DATAVENCIMENTO,SPARCELA.RA


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    quarta-feira, 20 de fevereiro de 2013 14:36
    Moderador
  • Muito obrigado, Fabrizzio Caputo
    quarta-feira, 20 de fevereiro de 2013 14:46