Luiz Fernando Posted April 10, 2015 Report Share Posted April 10, 2015 Colegas o MAX não seria para funcionar no WHERE , qdo tendo fazer isto o retorno é sempre nulo, preciso da relação de clientes que não tem movimento anterior a uma data... cSql="SELECT '',v.cliente,c.razao,date_format(max(v.data),'%d/%m/%Y')" cSql+=" FROM vendas as v" cSql+=" LEFT JOIN cliente as c on v.cliente = c.cod_client" cSql+=" WHERE max(v.data) <"+Any2Sql(cGet[1]) cSql+=" GROUP BY v.cliente" cSql+=" ORDER BY v.cliente" Mashafire and Ronaldbuch 2 Quote Link to comment Share on other sites More sharing options...
Eroni Posted April 10, 2015 Report Share Posted April 10, 2015 Na verdade não precisa usar o MAX, eu pelo menos uso assim: cSql+=" WHERE v.data < '"+Dtos(cGet[1])+"' " Abraço. Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted April 10, 2015 Author Report Share Posted April 10, 2015 Eroni vlw pela resposta, mais desta forma tb nao da certo, Eu escrevi errado nao e anterior e sim posterior aquela data por isto que usei o comando MAX Obrigado Luiz Fernando Quote Link to comment Share on other sites More sharing options...
kleyber Posted April 10, 2015 Report Share Posted April 10, 2015 Luiz Fernando bom dia, Não seria: cSql+=" WHERE v.data >"+Any2Sql(cGet[1]) ? Ou eu entendi errado? Quote Link to comment Share on other sites More sharing options...
joaosolution Posted April 10, 2015 Report Share Posted April 10, 2015 Luiz Bom dia Acho que seria assim: cSql="SELECT '',v.cliente,c.razao,date_format(max(v.data),'%d/%m/%Y') as maiordata" cSql+=" FROM vendas as v" cSql+=" LEFT JOIN cliente as c on v.cliente = c.cod_client" cSql+=" WHERE maiordata >"+Any2Sql(cGet[1]) cSql+=" GROUP BY v.cliente" cSql+=" ORDER BY v.cliente" Att João Bosco Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted April 10, 2015 Author Report Share Posted April 10, 2015 Ola Joao não deu certo,... Kleber preciso filtrar somente os cliente que ultima data de compra for inferior a data informada, mais para isto ele precisa pegar a ultima data tentei colocar ORDR BY v.cliente,v.data desc mais não deu certo tb. Obrigado Quote Link to comment Share on other sites More sharing options...
joaosolution Posted April 10, 2015 Report Share Posted April 10, 2015 Luiz Bom dia Teste assim: select * from (SELECT '',v.cliente,c.razao,date_format(max(v.data),'%d/%m/%Y') as maiordata FROM vendas as v LEFT JOIN cliente as c on v.cliente = c.cod_client GROUP BY v.cliente ORDER BY v.cliente) as a WHERE a.maiordata >"+Any2Sql(cGet[1])" Att João Bosco Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted April 10, 2015 Author Report Share Posted April 10, 2015 Joao vlw pelo retorno mais o retorno é nulo nos seus dois exemplo, engraçado que na logica era para ser uma coisa simples. Obrigado Luiz Fernando Quote Link to comment Share on other sites More sharing options...
joaosolution Posted April 10, 2015 Report Share Posted April 10, 2015 Luiz Se quiser posso dar uma olhada skype: joaosolution@hotmail.com Att João Bosco Quote Link to comment Share on other sites More sharing options...
evandro Posted April 10, 2015 Report Share Posted April 10, 2015 Olá, Use HAVING. cSql="SELECT '',v.cliente,c.razao,date_format(max(v.data),'%d/%m/%Y') as maiordata" cSql+=" FROM vendas as v" cSql+=" LEFT JOIN cliente as c on v.cliente = c.cod_client" cSql+=" GROUP BY v.cliente" cSql+=" ORDER BY v.cliente" cSql+=" HAVING maiordata < "+Any2Sql(cGet[1]) Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted April 10, 2015 Author Report Share Posted April 10, 2015 Evandro muito grato deu certinho com HAVING Joao Bosco obrigado pela força , nem precisei incomodar vc pelo skype rsrsrs Luiz Fernando Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted April 10, 2015 Author Report Share Posted April 10, 2015 Só para deixar anotado aqui uma outra dica passada pelo amigo Jackson que tb da certo Select v.cliente, c.razao, Max ( v.data ) FROM vendas v LEFT JOIN cliente as c on v.cliente = c.cod_client WHERE DATE_SUB( Now(), INTERVAL 30 DAY GROUP BY v.cliente neste caso é só substitui o 30 por uma variavel Luiz Fernando Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.