× Linguagem de Programação ADVPL

Perguntas Ajuda montar consulta SQL

Mais
10 anos 9 meses atrás - 10 anos 9 meses atrás #20991 por dexter
Boa tarde,

Alguém pode me ajudar na montagem de uma consulta,

Preciso listar os clientes que NÃO compraram de uma certa data pra trás.

Estou tentando assim pela data de emissão mas não
sei se tem que considerar mais tabelas ou campos.


SELECT * FROM SF2010

WHERE F2_EMISSAO > '20050324'

GROUP BY F2_EMISSAO
Ultima edição: 10 anos 9 meses atrás por dexter.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 9 meses atrás #20998 por Gui_Nasc
Respondido por Gui_Nasc no tópico Ajuda montar consulta SQL
O que você esta fazendo esta certo,
vai trazer todas as notas com Data superior a informada.

O que você pode fazer ja que o que vc quer é apenas os clientes, é mudar o SELECT, de uma forma q ele n repita informação:

SELECT DISTINCT F2_CLIENTE FROM SF2010

assim ele vai trazer o codigo de todos os clientes, sem repetir o mesmo codigo, facilitando para vc listar depois

o que vc tbm pode fazer é um INNER JOIN, par aja buscar as informações do Cliente na SA1

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 9 meses atrás #20999 por kanaamlrr
Respondido por kanaamlrr no tópico Ajuda montar consulta SQL
Bom dia dexter.
Acho que é isso que você precisa:
SELECT A1_COD, A1_NOME, A1_END, A1_CGC FROM SA1010
WHERE D_E_L_E_T_ <> '*' AND A1_FILIAL = '01' AND
A1_COD NOT IN (SELECT F2_CLIENTE FROM SF2010 WHERE D_E_L_E_T_ <> '*' AND F2_FILIAL = '01' AND F2_EMISSAO >= '20050324' GROUP BY F2_CLIENTE)

poderia ser feito com um left join também, acho que ficaria mais performático.
Abraço!

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 9 meses atrás #21046 por dexter
Respondido por dexter no tópico Ajuda montar consulta SQL
Obrigado amigos que responderam.


Guilherme eu estava meio doido aqui e não reparei no código que
coloquei ai com "group by".

Mas vc falando me veio uma dúvida quanto a usar o "distinct" porque se não me
engano um cliente pode ter o mesmo código mas para lojas diferentes então se eu
pego um cliente tenho que pegar todas suas lojas, mas não tenho certeza ainda.

Sobre a SA1 ou outras tabelas que também que estou queria saber se aqui é
a forma correta de pegar os clientes que NÃO compraram de uma certa data.



Kanaãm
Tudo bom,

Não sei ainda porque a sua consulta não me retornou nada no meu banco aqui.
Se eu pegar os clientes usando o campo emissão da F2 acredito que eu consigo listar
os clientes que compraram depois desta data, mas eu preciso pegar os que NÃO compraram, então complicou :(
E também acredito que não vai ser confiável porque se eu pego antes ou depois o cliente pode ter nota antes de depois.




Solução:

Depois de muito pesquisar e agradeço a ajuda de vcs do forum eu encontrei algo
que poderia ser mais favoravel.


Na SA1 tem um campo chamado A1_ULTCOM que é justamente a referência para isto que
preciso, identificar a última compra do cliente. ahahahaahah bom demais né. :)

Mas analisando os cadastros dos clientes achei uma pequena particularidade que
poderia trazer problemas na consulta, pois em alguns clientes poderia ocorrer
deste campo estar VAZIO caso de clientes novos.

Fiz assim:
SELECT count(*) FROM sa1010 sa1 
   WHERE
      sa1.a1_ultcom < '20050101'  -- data de ultima compra
      AND sa1.a1_msblql = '2'     -- nao bloqueado
      AND sa1.d_e_l_e_t_ <> '*'   -- nao deletado   



Obrigado pela ajuda de todos.

:)

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 9 meses atrás - 10 anos 9 meses atrás #21076 por Gui_Nasc
Respondido por Gui_Nasc no tópico Ajuda montar consulta SQL
Rsrs tinha esquecido deste Campo.

bom então resolve seu problema

agora para tirar os Clientes novos do relatório
coloque agora no WHERE um A1_ULTCOM <> " / / " ou caso queira que esse Clientes apareçam um A1_ULTCOM = " / / " e pronto ^^

Sobre o DISTINCT, se vocÊ quiser que ele lite todas as lojas do Cliente tera que colocar o campo loja no SELECT tbm, ai depende do por que vc vai querer esses Dados , se vai ser necessário ou não listar todas as lojas do Cliente
Ultima edição: 10 anos 9 meses atrás por Gui_Nasc.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 9 meses atrás #21077 por lalberto
Respondido por lalberto no tópico Ajuda montar consulta SQL
Guilherme obrigado pela ajuda, só lembrando não existe A1_ULTCOM = ' / / ' ok,
utilize apenas assim:

Where A1_ULTCOM <> '' ou A1_ULTCOM = ''

Abraços.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.147 segundos
Joomla templates by a4joomla