Em 9 de junho de 2015 17:42, JotaComm <[email protected]> escreveu:
>> Meu select está dando erro dizendo que eu preciso usar
>> "PESSOAS".nome_pessoa na clausula GROUP BY. Seu eu fiser como pede ela
>> passa a pedir as outras colunas também.
>>
>> SELECT
>>     "PESSOAS".nome_pessoa,
>>     "CLIENTES".rg_cliente,
>>     "CLIENTES".cpf_cliente,
>>     "ESTADIAS".quarto_estadia,
>>     "ESTADIAS".entrada_estadia,
>>     CURRENT_DATE - DATE("ESTADIAS".entrada_estadia) AS diarias,
>>     "ESTADIAS".valor_estadia,
>>     SUM("LIGACOES".valortotal_ligacao) AS totalligacoes
>> FROM
>>     "ESTADIAS"
>> JOIN
>>     "PESSOAS" ON "PESSOAS".id_pessoa = "ESTADIAS".cliente_estadia
>> JOIN
>>     "CLIENTES" ON "CLIENTES".pessoa_cliente =
>> "ESTADIAS".cliente_estadia
>> JOIN
>>     "LIGACOES" ON "LIGACOES".quarto_ligacao = "ESTADIAS".quarto_estadia
>> AND
>>     "LIGACOES".datahora_ligacao >= "ESTADIAS".entrada_estadia
>> WHERE
>>     "ESTADIAS".id_estadia = 1
>>
>>
>> Segue o erro
>>
>>
>> "ERROR:  column "PESSOAS.nome_pessoa" must appear in the GROUP BY clause
>> or be used in an aggregate function
>> LINE 2:     "PESSOAS".nome_pessoa,
>
> Sim, você está usando o SUM, e para isso precisa do GROUP BY, não tem como
> fugir, além disso, todas as colunas do teu SELECT terão que aparecer no
> GROUP BY, isso é por causa da função de agregação SUM.

Uai não sei se entendi bem, mas não resolveria usando uma window function?

Tente isso:

     SUM("LIGACOES".valortotal_ligacao) OVER ()  AS totalligacoes

Se desejar saber o valor por CPF, por exemplo:

     SUM("LIGACOES".valortotal_ligacao) OVER (PARTITION BY
"CLIENTES".cpf_cliente )  AS totalligacoes


-- 
Marcone Peres
https://br.linkedin.com/in/marconeperes
(61) 8146-0028 (VIVO)
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a