Último Registro da Tabela - Banco Firebird
15/03/2018
0
Preciso de ajuda para mostrar o resultado do Total da Última Compra do Cliente na Tabela OS - Banco Firebird
Já procurei ajuda em vários Fóruns e não consegui.
Se eu coloco um MAX, ele retorna o Valor Maior.
Se eu coloco um ORDER BY O2.TOTAL DESC ROWS 1 TO 1, o campo retorna NULL;
Dá forma que está, retorna todos os Valores das Compras do Cliente.
O Campo está no Terceiro JOIN.
select
c.razao
, c.endereco ||' - '|| c.cep as endereco
, cast (x.data as date) as dataultimacompra
, y.total as totalultimacompra
, z.os as osultimacompra
, count(o.codos) as qtde_vendas
, sum(o.total) as total_vendas
from clientes c
join os o on o.codcli = c.codcli
join (select max (o2.dataos) as data, o2.codcli from os o2
where o2.tipo = 2
and o2.dataosfin is not null
group by o2.codcli
) as x on x.codcli = c.codcli
join (select distinct o2.total as total, o2.codcli from os o2
where o2.tipo = 2
and o2.dataosfin is not null
order by o2.total desc
) as y on y.codcli = c.codcli
join (select max(o2.os) as os, o2.codcli from os o2
where o2.tipo = 2
and o2.dataosfin is not null
group by o2.codcli
) as z on z.codcli = c.codcli
where o.tipo = 2
and o.dataosfin is not null
group by 1, 2, 3, 4, 5
order by 1
Karen Motta
Posts
15/03/2018
Karen Motta
Infelizmente ainda não consegui. Consegue me ajudar?
15/03/2018
Luiz Santos
Talvez você precise fazer isso em duas etapas.
Vou supor que o número da OS seja sequencial.
Logo a maior OS é a última compra.
Então você vai ter que fazer um SELECT CLIENTE, MAX(OS) FROM TABELA.
Com esse resultado, voce vai buscar esses clientes com as OS na sua tabela principal.
Consegui ser claro?
16/03/2018
Tone Costa.
os.total, os.data_abertura, os.data_fechamento,<br />
cli.codcli, cli.nome, cli.endereco, cli.municipio, cli.bairro<br />
from os<br />
left joinn cliente cli on cli.codcli = ors.codcli<br />
where os.codcli = :codcli<br />
order by os.num_ordem_servico descending<br />
<br />
Talvez ajude.<br />
16/03/2018
Karen Motta
Conseguiu sim, mas não é isso que eu preciso.
Eu preciso do registro da Data da Última Compra, Valor da Última Compra, Número da Última Compra de cada Cliente.
A função MAX, dá certo somente com os campos de Data e Número da Última Compra. Mas com o Valor da Última Compra não dá certo.
16/03/2018
Karen Motta
Obrigada ! Dessa forma ajudou, mas serve para pesquisar somente um Cliente.
Se eu executo sem o parâmetro where os.codcli = :codcli ele vai mostrar o último cliente que comprou.
Mas eu preciso da Data, Valor e Número da Última Compra de todos os Cliente e não somente de um Cliente.
Clique aqui para fazer login e interagir na Comunidade :)