SQL - CLIENTES SEM MOVIMENTO POR REGIAO

FUTURA 19/10/2009 08:29:13
#325645
preciso montar uma query que pegue em um período os clientes que não tiveram movimento por região, ou melhor, as cidades serão informadas.
ALVAROVB2009 19/10/2009 08:41:47
#325649
Futura Bom Dia
Acho que ficaria algo assim:
select * from suatabela where data between datainicial and datafinal and cidade not in (cidades selecionadas)

Testa ai

Abraço
FUTURA 19/10/2009 08:55:08
#325652
alvaro, ai q ta o problema, não achei idéia para as cidades selecionadas, não estava querendo usar tabela temporária para grava-las, mas pelo jeito vai ter q usar.
TECLA 19/10/2009 09:06:36
#325653
Informe a ESTRUTURA da tabela.
ALVAROVB2009 19/10/2009 09:20:35
#325656
Futura vc pode ter uma tabela onde estejam cadastradas as cidades e no cadastro de clientes quando for selecionar a cidade, vc guarda o código da cidade, assim vc terá como selecionar as cidades, más essa tabela de cidades não será temporária

Entendeu?
FUTURA 19/10/2009 09:36:10
#325658
sim entendi, mas eu ja tenho isto. estou tentanto achar a lógica para montar a sql de clientes q não compram no período, o período esta na tabela de vendas, e no cadastro de clientes, tenho o campo id_cid ( cidades). acho q teria q ser um select dentro de outro, o problema é a selação das cidades, por exemplo, ao tirar o relatório o usuário escolhe 3 cidades, não estou vendo saida senão joga-las em uma tabela temp.....para depois montar o select....
RCMRO 19/10/2009 09:51:55
#325661
Resposta escolhida
SELECT      Cli.Cidade, cli.Nome,
COUNT(Mov.DataMov) AS Qtd
FROM Clientes Cli
LEFT JOIN Movimentos Mov
ON mov.CodCli = Cli.CodCli
HAVING COUNT(Mov.DataMov) = 0
GROUP BY Cli.Cidade, cli.Nome
WHERE mov.DataMov BETWEEN @Dt1 AND @Dt2
ALVAROVB2009 19/10/2009 09:57:49
#325662
Futura não sei se entendi a sua dificuldade, más acho que está em saber como guardar as cidades selecionadas é isso?

Se for tem duas formas
No Form vc preenche 3 combos - Descricao + código - depois da um split e tira o código e/ou preenche um combo e cria 3 variáveis e da o mesmo split e guarda o código, depois utiliza o meu select e coloca esses códigos lá, td o que for diferente do q foi selecionado, irá trazer no resultado

Se entendi acho q isso pode te ajudar
RCMRO 20/10/2009 07:24:43
#325746
O SELECT que você quer é este aqui mas, se for montar ele no VB para executar, muda as variáveis @xxx para os valores que vc tem dos respectivos campos.

SELECT      cid.NomeCidade, cli.Nome,
COUNT(Mov.DataMov) AS Qtd
FROM Clientes Cli
INNER JOIN Cidades Cid
ON cid.id_cid = cli.id_cid
LEFT JOIN Movimentos Mov
ON mov.CodCli = Cli.CodCli
HAVING COUNT(Mov.DataMov) = 0
GROUP BY Cid.NomeCidade, cli.Nome
WHERE mov.DataMov BETWEEN @Dt1 AND @Dt2
AND (cid.NomeCidade = @Cid1 OR
cid.NomeCidade = @Cid2 OR
cid.NomeCidade = @Cid3)
FUTURA 20/10/2009 07:31:36
#325747
BLZ RCMRO..EU VOU TESTAR DEPOIS TE PASSO O RESULTADO...POR EQTO VALEU....
RCMRO 23/10/2009 14:20:18
#326173
Conseguiu testar? Funcionou? Tem algo mais que eu possa te ajudar?

Se estiver tudo OK, não esquece de fechar o tópico;
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas