Último Registro da Tabela - Banco Firebird
Olá,
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
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
Curtidas 0
Respostas
Ricardo Araujo
15/03/2018
Você conseguiu resolver o seu problema?
GOSTEI 0
Karen Motta
15/03/2018
Você conseguiu resolver o seu problema?
Infelizmente ainda não consegui. Consegue me ajudar?
GOSTEI 0
Luiz Santos
15/03/2018
Karen;
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?
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?
GOSTEI 0
Tone Costa.
15/03/2018
select first 1<br />
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 />
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 />
GOSTEI 0
Karen Motta
15/03/2018
Luiz Fernando,
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.
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.
GOSTEI 0
Karen Motta
15/03/2018
Tone Costa,
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.
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.
GOSTEI 0