Jump to content
malkarater

Consulta Endereço cliente

Recommended Posts

boa tarde a todos,

 

eu tenho uma consulta e nela preciso criar uma critica onde me traga endereço de clientes do tipo entrega, caso não exista o cadastro preciso que a consulta assuma o endereço de faturamento...

obs: o campo pessoaend é o onde está cadastrado os dois endereço, porém preciso que ele seja padrao 3, assumindo o 0 quando nao tiver cadastrado.

 

o rnk usei para que pegue apenas a ultima compra do cliente.

 

poderiam me ajudar?

 

abaixo segue meu codigo:


 

SELECT  *
FROM    (
    SELECT DISTINCT  a.pessoa, a.nome, row_number() OVER(PARTITION BY a.pessoa ORDER  BY b.inclusao DESC)rnk,
    a.rua, a.bairro, a.cidade, a.cep, a.complemento, a.ativid, b.inclusao, d.pessoaend
    FROM    pessoa a, venda b, vendaitem c, clienteend d
    WHERE   a.pessoa = b.pessoa
    AND     a.pessoa = d.pessoa
    AND     b.pessoa = d.pessoa
    AND     b.pedvenda = c.pedvenda
    AND     a.status = 'A'
    AND     b.empresa = 01
    AND     d.pessoaend =3 
    AND     b.inclusao >= '23/JUL/2019'
    AND     a.ativid IN ('SUPERMERCADO', 'LOJA "1,99"', 'LOJA CONVENIENCIA', 'LOJA 1,99', 'LOJA ROUPA', 'PAPELARIA/BAZAR')
    GROUP BY a.pessoa, a.nome, b.inclusao, a.rua, a.bairro, a.cidade, a.cep, a.complemento, a.ativid, b.inclusao, d.pessoaend
    ORDER BY a.nome, b.inclusao desc)
WHERE  RNK <= 1
ORDER BY CIDADE, BAIRRO, ATIVID, NOME

 

Share this post


Link to post
Share on other sites

O endereço é 0-n  ?

 

Ou seja pode não ter ou ter mais de um (3 e 0) ?

 

tente

 

SELECT  *
FROM    (
    SELECT DISTINCT  a.pessoa, a.nome, row_number() OVER(PARTITION BY a.pessoa ORDER  BY b.inclusao DESC)rnk,
    a.rua, a.bairro, a.cidade, a.cep, a.complemento, a.ativid, b.inclusao, d.pessoaend
    FROM    pessoa a, venda b, vendaitem c, clienteend d
    WHERE   a.pessoa = b.pessoa
    AND     a.pessoa = d.pessoa
    AND     b.pessoa = d.pessoa
    AND     b.pedvenda = c.pedvenda
    AND     a.status = 'A'
    AND     b.empresa = 01
    AND     d.pessoaend = (select max(d1.pessoaend)
                           from  clienteend d 1
                           where d1.pessoa = d.pessoa
                           and   d1.pessoaend in (3,0))                                                                         
    AND     b.inclusao >= '23/JUL/2019'
    AND     a.ativid IN ('SUPERMERCADO', 'LOJA "1,99"', 'LOJA CONVENIENCIA', 'LOJA 1,99', 'LOJA ROUPA', 'PAPELARIA/BAZAR')
    GROUP BY a.pessoa, a.nome, b.inclusao, a.rua, a.bairro, a.cidade, a.cep, a.complemento, a.ativid, b.inclusao, d.pessoaend
    ORDER BY a.nome, b.inclusao desc)
WHERE  RNK <= 1
ORDER BY CIDADE, BAIRRO, ATIVID, NOM

E

 

 

Share this post


Link to post
Share on other sites

Motta, aparentemente dessa maneira que você nos mostrou está correto, está exibindo priorizando o endereço 3. vou pedir para que validem internamente.

 

Obrigado pela ajuda.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.