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