Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JEOVÁ OLIVEIRA

Query robusta

Recommended Posts

ID CLIENTE FUNCIONARIO FUNCAO EXAME DTMOV DTDIGITACAO PERIODO

59 12 JOSÉ FSDFS adimissional 10/10/2006 14/11/2006 outubro

60 12 MAX FSD adimissional 11/10/2006 14/11/2006 abril

61 12 FFSD FSDFKJ adimissional 12/10/2006 14/11/2006 abril

62 78 MARTA FHSDJ adimissional 15/10/2006 14/11/2006 abril

 

NESTA TABELA QUE CONTEM NESTA IMAGEM TEM:

Informações do Cliente tais como: codigo e nome fantasia do cliente, já que é empresa.

o restante dos dados mostrados na imagem vem das informações que o usuario digita via form.

a questão é, dessa tabela movimentos vem derivado todo meu faturamento; recibos de todas as

empresas ou por empresa especifica, relação de funcionário por empresa e assim vai.

 

Como poderei criar uma consulta em que me mostre esse resultado

 

CLIENTE FANTASIA TOTEXAME VEXAME TOTGERAL

12 A FORMULA 3 18 54

78 G.E.L.R.E. 1 12 12

 

 

Só que esse resultado tem que vir dentro do periodo de data do campo DTMOV da tb Movimentos

Por favor quem pode me ajudar.

Estou desesperado.

 

 

Título Editado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom...você tem q fazer um select, relacionando a tabela de empresas com a tabela de exames, fazer um count(CLIENTE) para pegar o número de exames feitos por aquela empresa...não compreendi o que seria VEXAME....e o TOTGERAL seria um campo calculado...de mais informações a respeito das tabelas e qual o banco q você está usando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom...você tem q fazer um select, relacionando a tabela de empresas com a tabela de exames, fazer um count(CLIENTE) para pegar o número de exames feitos por aquela empresa...não compreendi o que seria VEXAME....e o TOTGERAL seria um campo calculado...de mais informações a respeito das tabelas e qual o banco q você está usando...

COLOQUEI ASSIMSELECTM.IDCLIENTE,C.FANTASIA,M.DTDIGITACAO,COUNT(C.IDCLIENTE) AS TOTEXAME,C.VEXAME,SUM(C.VEXAME) AS TOTGERALFROM MOVIMENTOS M INNER JOIN CLIENTES CON M.IDCLIENTE=C.IDCLIENTEGROUP BYM.IDCLIENTE,M.DTDIGITACAO,C.FANTASIA,C.VEXAMEHAVING M.DTDIGITACAO BETWEEN :DTI AND :DTFO RESULTADO FOICLIENTE FANTASIA DTDIGITACAO TOTEXAME VEXAME TOTGERAL12 A FORMULA 13/11/2006 1 R$ 18,00 R$ 18,0012 A FORMULA 14/11/2006 2 R$ 18,00 R$ 36,0078 G.E.L.R.E. 13/11/2006 1 R$ 12,00 R$ 12,00VEXAME É O VALOR DO EXAME QUE ESTÁ CADASTRADO NA TB DE CLIENTES.MAIS QUANDO COLOCO UM INTERVALO DE DATAS MAIOR E O CLIENTE SE REPETE EM DUAS DATAS ELE APARECE DUAS VESES.O QUE EU QUERO É TOTALIZAR CADA UM INDEPENDENTE DO NUMEROS DE VEZES QUE ELE APARECE NA DATAS DIVERSAS.O BANCO QUE ESTOU USANDO É IB/FB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom...você tem q fazer um select, relacionando a tabela de empresas com a tabela de exames, fazer um count(CLIENTE) para pegar o número de exames feitos por aquela empresa...não compreendi o que seria VEXAME....e o TOTGERAL seria um campo calculado...de mais informações a respeito das tabelas e qual o banco q você está usando...

Por favor, me mandem alguma coisa que eu possa usar, é meu primeiro programa, preciso de ajuda.

caro colega, isso ocorre devido aos campos da clausula group by, no caso eles tem q ter valores iguais para serem agrupados e dar o resultado q você quer...

Me ajude por favor, preciso deste resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom...você tem q fazer um select, relacionando a tabela de empresas com a tabela de exames, fazer um count(CLIENTE) para pegar o número de exames feitos por aquela empresa...não compreendi o que seria VEXAME....e o TOTGERAL seria um campo calculado...de mais informações a respeito das tabelas e qual o banco q você está usando...

Por favor, me mandem alguma coisa que eu possa usar, é meu primeiro programa, preciso de ajuda.

caro colega, isso ocorre devido aos campos da clausula group by, no caso eles tem q ter valores iguais para serem agrupados e dar o resultado q você quer...

Me ajude por favor, preciso deste resultado.
IDMOV CLIENTE FUNCIONARIO FUNCAO EXAME DTMOV DTDIGITACAO PERIODO59 12 JOSÉ FSDFS Adimissional 10/10/2006 14/11/2006 outubro60 12 MAX FSD adimissional 11/10/2006 14/11/2006 abril61 12 FFSD FSDFKJ adimissional 12/10/2006 14/11/2006 abril62 78 MARTA FHSDJ adimissional 15/10/2006 14/11/2006 abrilNESTA TABELA QUE CONTEM NESTA IMAGEM TEM:Informações do Cliente tais como: codigo e nome fantasia do cliente, já que é empresa.o restante dos dados mostrados na imagem vem das informações que o usuario digita via form.a questão é, dessa tabela movimentos vem derivado todo meu faturamento; recibos de todas asempresas ou por empresa especifica, relação de funcionário por empresa e assim vai.Como poderei criar uma consulta em que me mostre esse resultadoIDCLIENTE FANTASIA TOTEXAME VEXAME TOTGERAL12 A FORMULA 3 18 5478 G.E.L.R.E. 1 12 12Só que esse resultado tem que vir dentro do periodo de data do campo DTMOV da tb MovimentosPor favor quem pode me ajudar.Posso mandar o BD zipado pelo e-mail é a melhor opção pra quam quiser me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei exatamente o nome das tabelas, mas pode fazer algo do tipo:

 

select cliente.IDCLIENTE, cliente.FANTASIA, count(*) as TOTEXAME, exame.VEXAME, sum(VEXAME) as TOTGERALfrom cliente, examewhere cliente.idcliente = exame.idclienteand exame.data between :dtIni and :dtFimgroup by cliente.IDCLIENTE, cliente.FANTASIA, exame.VEXAME

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom...você tem q fazer um select, relacionando a tabela de empresas com a tabela de exames, fazer um count(CLIENTE) para pegar o número de exames feitos por aquela empresa...não compreendi o que seria VEXAME....e o TOTGERAL seria um campo calculado...de mais informações a respeito das tabelas e qual o banco q você está usando...

A CONSULTA FICOU ASSIMSELECT movimentos.idcliente,clientes.fantasia,count(1) as NUMATE,clientes.vexame,sum(clientes.vexame) as TOTALFROM movimentos,clientesWHERE clientes.idcliente=movimentos.idcliente and movimentos.dtmov between :inicio and :fimGROUP BY movimentos.IDCLIENTE,clientes.fantasia,clientes.vexameÉ DESTA FORMA QUE EU QUERIA

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.