Fórum Erro Group By | Agrupando por Mes #47357

11/10/2004

0

Amigos,

Criei a View Abaixo e logo apos o select usando a mesma.
O objetivo é agrupar os valores das contas por mes, podendo compara-los entre um mes e outro, numa mesma linha...
Sem a clausula
 GROUP BY IDGRUPOCONTA, DESCRICAOGRUPOCONTA, TIPODEBITOCREDITO, FIXO, MES

O select funciona, porem nao agrupa os meses, por exemplo:
Eu paguei 100 em janeiro, 200 em fevereiro e 300 e março. Eu quero que apareca tudo numa linha só. Atualmente está aparecendo 3 linhas cada uma com o valor do seu respectivo mes, porem para um mesmo grupo de conta...

Com a clausula do group by, dá o seguinte erro:

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


onde estou errando?

CREATE VIEW VWFRMRELCPAGARRECEBERAGRUPADAS (
    IDGRUPOCONTA,
    DESCRICAOGRUPOCONTA,
    TIPODEBITOCREDITO,
    FIXO,
    VALORPGTO,
    MES)
AS
SELECT CPR.IDGRUPOCONTA, GC.DESCRICAOGRUPOCONTA, GC.TIPODEBITOCREDITO,
GC.FIXO, SUM(PCP.VALORPAGAMENTO) AS VALORPGTO, EXTRACT(MONTH FROM PCP.DATAPAGAMENTO) AS MES
  FROM CPAGARRECEBER CPR
INNER JOIN PARCELACPAGAR PCP ON PCP.IDCPAGARRECEBER = CPR.IDCPAGARRECEBER
INNER JOIN GRUPOCONTA GC ON GC.IDGRUPOCONTA = CPR.IDGRUPOCONTA
INNER JOIN FORMAPGTO FP ON FP.IDFORMAPGTO = CPR.IDFORMAPGTO
GROUP BY CPR.IDGRUPOCONTA, GC.DESCRICAOGRUPOCONTA, GC.TIPODEBITOCREDITO, GC.FIXO, EXTRACT(MONTH FROM PCP.DATAPAGAMENTO)
;




SELECT IDGRUPOCONTA, DESCRICAOGRUPOCONTA, TIPODEBITOCREDITO, FIXO, VALORPGTO,
CASE MES WHEN ´1´ THEN VALORPGTO END AS VR_JAN,
CASE MES WHEN ´2´ THEN VALORPGTO END AS VR_FEV,
CASE MES WHEN ´3´ THEN VALORPGTO END AS VR_MAR,
CASE MES WHEN ´4´ THEN VALORPGTO END AS VR_ABR,
CASE MES WHEN ´5´ THEN VALORPGTO END AS VR_MAI,
CASE MES WHEN ´6´ THEN VALORPGTO END AS VR_JUN,
CASE MES WHEN ´7´ THEN VALORPGTO END AS VR_JUL,
CASE MES WHEN ´8´ THEN VALORPGTO END AS VR_AGO,
CASE MES WHEN ´9´ THEN VALORPGTO END AS VR_SET,
CASE MES WHEN ´10´ THEN VALORPGTO END AS VR_OUT,
CASE MES WHEN ´11´ THEN VALORPGTO END AS VR_NOV,
CASE MES WHEN ´12´ THEN VALORPGTO END AS VR_DEZ
 FROM VWFRMRELCPAGARRECEBERAGRUPADAS
WHERE MES IN (9, 10, 11)
AND IDGRUPOCONTA IN (3, 9, 7, 1, 2, 6, 10, 5, 4, 8)
GROUP BY IDGRUPOCONTA, DESCRICAOGRUPOCONTA, TIPODEBITOCREDITO, FIXO, MES



Rafaelunp

Rafaelunp

Responder

Posts

11/10/2004

Emerson Nascimento

retire o GROUP BY da view.


Responder

Gostei + 0

11/10/2004

Rafaelunp

retire o GROUP BY da view.

Se eu tirar o grrup by nao funciona... eu nao vou ter o mes, nem o somatorio...


Responder

Gostei + 0

11/10/2004

Afarias

Qual o banco de dados??? O Interbase e o Firebird 1.0 não aceitam funções em um group by ::

group by EXTRACT(MONTH FROM PCP.DATAPAGAMENTO)



T+


Responder

Gostei + 0

12/10/2004

Rafaelunp

Qual o banco de dados??? O Interbase e o Firebird 1.0 não aceitam funções em um group by :: group by EXTRACT(MONTH FROM PCP.DATAPAGAMENTO) T+


Cara do jeito que está, está funcionando... só nao do jeito que eu quero... vem assim:

DESCRIÇÃOJANEIRO   FEVEREIRO   MARÇO
ALIMENTAÇÃO  100
ALIMENTAÇÃO             200
ALIMENTAÇÃO                       300
FUNCIONARIOS      200
FUNCIONARIOS                           250


Eu quero assim:

DESCRIÇÃOJANEIRO   FEVEREIRO   MARÇO
ALIMENTAÇÃO  100        200       300 
FUNCIONARIOS      200                  250



Responder

Gostei + 0

13/10/2004

Afarias

O SQL está retornando corretamente. Neste caso eu usaria um Procedimento ou mesmo deixaria da forma como está e apenas formataria os dados no cliente.


T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar