Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcelobraga01

Problemas SQL

Recommended Posts

Galera, estou com o seguinte problema na query abaixo apresntando o seguinte erro:

"Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)."

 

Mas se incluo os demais campos no Group By, ele retorna o seguinte erro:

"Cannot use an aggregate function in a GROUP BY clause."

 

 

Select O.RAZAO_SOCIAL AS CAMPO1,--Campo1

--Campo 2

(SELECT (COALESCE(SUM(GL.CONT_PAT_APOSEN),0) +

COALESCE(SUM(GL.CONT_PAT_ATIVOS),0) +

COALESCE(SUM(GL.CONT_PAT_DOENCA),0) +

COALESCE(SUM(GL.CONT_PAT_MATERN),0) +

COALESCE(SUM(GL.CONT_PAT_PENSIO),0))

FROM GUIA_PAGAMENTO GP, GUIA_LANCAMENTO GL1

WHERE GP.ID_GUIA_LANCAMEN = GL1.ID_GUIA

AND GL.MES = GL1.MES) AS CAMPO2,

--Campo 3

(SELECT (COALESCE(SUM(GP.CONT_PAT_APOSEN),0) +

COALESCE(SUM(GP.CONT_PAT_ATIVOS),0) +

COALESCE(SUM(GP.CONT_PAT_DOENCA),0) +

COALESCE(SUM(GP.CONT_PAT_MATERN),0) +

COALESCE(SUM(GP.CONT_PAT_PENSIO),0))

FROM GUIA_PAGAMENTO GP, GUIA_LANCAMENTO GL1

WHERE GP.ID_GUIA_LANCAMEN = GL1.ID_GUIA

AND GL.MES = GL1.MES) AS CAMPO3,

--Campo 4

(SELECT (COALESCE(SUM(GB.CONT_PAT_APOSEN),0) +

COALESCE(SUM(GB.CONT_PAT_ATIVOS),0) +

COALESCE(SUM(GB.CONT_PAT_DOENCA),0) +

COALESCE(SUM(GB.CONT_PAT_MATERN),0) +

COALESCE(SUM(GB.CONT_PAT_PENSIO),0))

FROM GUIA_BAIXA GB, GUIA_LANCAMENTO GL1

WHERE GB.ID_GUIA = GL1.ID_GUIA

AND GL.MES = GL1.MES) AS CAMPO4

FROM ORGAO O, GUIA_LANCAMENTO GL

WHERE GL.ANO_COMPETENCIA = 2011

AND GL.ID_ORGAO = O.ID_ORGAO

GROUP BY CAMPO1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou dar meu pitado, apesar de minha area ser SQLServer.

 

Agrupa pelo nome do campo O.RAZAO_SOCIAL e nao pelo alias.

 

Qdo você traz somente o campo 1, ele vem normal?

 

E que função você disse ai em cima?

 

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou dar meu pitado, apesar de minha area ser SQLServer.

 

Agrupa pelo nome do campo O.RAZAO_SOCIAL e nao pelo alias.

 

Qdo você traz somente o campo 1, ele vem normal?

 

E que função você disse ai em cima?

 

 

Abçs

 

Opa!

Aqui, em relação ao campo1 ele tráz normalmente sim... e a função que eu fala era em relação a group by porque preciso essas contas agrupadas pelo Orgao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou fazer como se eu fizesse no SQL

 

Select O.RAZAO_SOCIAL AS CAMPO1,--Campo1
--Campo 2
(
    SELECT 
    (
     COALESCE (SUM(GL.CONT_PAT_APOSEN ),0) +
     COALESCE (SUM(GL.CONT_PAT_ATIVOS    ),0) +
     COALESCE (SUM(GL.CONT_PAT_DOENCA ),0) +
     COALESCE (SUM(GL.CONT_PAT_MATERN  ),0) +
     COALESCE (SUM(GL.CONT_PAT_PENSIO   ),0)
    )
    FROM GUIA_PAGAMENTO GP, GUIA_LANCAMENTO GL1
    WHERE GP.ID_GUIA_LANCAMEN = GL1.ID_GUIA
    AND GL.MES = GL1.MES
) AS CAMPO2

FROM ORGAO O, GUIA_LANCAMENTO GL
WHERE GL.ANO_COMPETENCIA = 2011
AND GL.ID_ORGAO = O.ID_ORGAO
GROUP BY O.RAZAO_SOCIAL

 

Veja se tudo isso da erro..... Se ser, poste o erro pls ><

 

Não fiz nada demais, apenas deixei o campo1 e campo2 de forma ordenada. Para ver o erro é melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu a força ai amigo mas o erro é o mesmo:

"Invalid token.

Dynamic SQL Error.

SQL error code = -104.

Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)."

 

 

 

Vou fazer como se eu fizesse no SQL

 

Select O.RAZAO_SOCIAL AS CAMPO1,--Campo1
--Campo 2
(
    SELECT 
    (
     COALESCE (SUM(GL.CONT_PAT_APOSEN ),0) +
     COALESCE (SUM(GL.CONT_PAT_ATIVOS    ),0) +
     COALESCE (SUM(GL.CONT_PAT_DOENCA ),0) +
     COALESCE (SUM(GL.CONT_PAT_MATERN  ),0) +
     COALESCE (SUM(GL.CONT_PAT_PENSIO   ),0)
    )
    FROM GUIA_PAGAMENTO GP, GUIA_LANCAMENTO GL1
    WHERE GP.ID_GUIA_LANCAMEN = GL1.ID_GUIA
    AND GL.MES = GL1.MES
) AS CAMPO2

FROM ORGAO O, GUIA_LANCAMENTO GL
WHERE GL.ANO_COMPETENCIA = 2011
AND GL.ID_ORGAO = O.ID_ORGAO
GROUP BY O.RAZAO_SOCIAL

 

Veja se tudo isso da erro..... Se ser, poste o erro pls ><

 

Não fiz nada demais, apenas deixei o campo1 e campo2 de forma ordenada. Para ver o erro é melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Select O.RAZAO_SOCIAL AS CAMPO1,CAMPO2
FROM ORGAO O, GUIA_LANCAMENTO GL,
(
    SELECT 
    (
     COALESCE (SUM(GL.CONT_PAT_APOSEN ),0) +
     COALESCE (SUM(GL.CONT_PAT_ATIVOS    ),0) +
     COALESCE (SUM(GL.CONT_PAT_DOENCA ),0) +
     COALESCE (SUM(GL.CONT_PAT_MATERN  ),0) +
     COALESCE (SUM(GL.CONT_PAT_PENSIO   ),0)
    ) CAMPO2
    FROM GUIA_PAGAMENTO GP, GUIA_LANCAMENTO GL1
    WHERE GP.ID_GUIA_LANCAMEN = GL1.ID_GUIA
    AND GL.MES = GL1.MES
) VIRTUAL
WHERE GL.ANO_COMPETENCIA = 2011
AND GL.ID_ORGAO = O.ID_ORGAO

 

Talvez com uma tabela virtual funcione.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.