Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Srs., boa tarde.
Preciso gerar uma consulta que possa visualizar todos os registros de contribuição de aplicadores ordenados por empresa, matricula e data, MAS apenas relacionar os aplicadores com saldo > 0.
Tabela MOVTO, contém os campos Empresa, Matricula, Data e Valor
101 63 26/05/2008 1,35
101 212 26/05/2008 -4,95
101 221 26/05/2008 1742,48
101 221 23/06/2008 30,48
101 221 16/07/2008 30,48
101 221 15/08/2008 30,48
101 221 15/09/2008 30,48
101 221 07/11/2008 60,96
101 221 09/12/2008 30,48
No exemplo acima, teria relacionados, então, apenas as matrículas 63 e 221, com seus respectivos movimentos.
A matricula 212 seria relacionado devido ao saldo <=0
Tentei o seguinte, mas dá erro na subquery:
select movempr, movmatr, movdata, movvalor
FROM SCCAMOVC where exists (select movempr, movmatr, sum(movvalor) as Capital
from sccamovc
where Capital>0)
group by movempr, movmatr, movdata, movvalor
Alguém saberia a forma correta de executar a query. Obrigado.
Ola Motta.
Deu erro na execução do comando que vc me passou informando que há uma palavra-chave ou frase não conhecida.
Os nomes dos campos estão corretos.
Att.
RenatoReis
Precisa trazer todas as datas?
Se sim, somente a ultima?
select movempr, movmatr, max(movdata), sum(movvalor)
FROM SCCAMOVC
WHERE sum(movvalor) > 0
group by movempr, movmatr
Tente
select movempr, movmatr, movdata, movvalor
FROM SCCAMOVC
where (movempr, movmatr) IN (select (movempr, movmatr)
from sccamovc
GROUP BY movempr, movmatr
HAVING sum(movvalor) > 0
)Motta,
Preciso relacionar todas as datas de movimento sim.
Na query que vc me passou por último, dá um erro que parece estar idenificando o campo MOVEMPR depois do primeiro WHERE da clausula como uma tabela.
Testei sem os parenteses nos trechos (movempr, movmatr), mas dá o mesmo erro.
Testei apenas o trecho:
select movempr, movmatr from sccamovc GROUP BY movempr, movmatr HAVING sum(movvalor) > 0
e dá o mesmo erro.
Acredito que o problema esteja na subquery.
Continuo pesquisando aqui....Abs
att
select movempr, movmatr, movdata, movvalor
FROM SCCAMOVC
where (movempr, movmatr)
IN (select movempr, movmatr
from sccamovc
GROUP BY movempr, movmatr
HAVING sum(movvalor) > 0)Motta,
Dando erro!
Cannot open file "SCCAMOVC where (movempr.DBF". A sintaxe do nome do arquivo, do nome do diretório ou do rótulo do volume está incorreta.
Ah, esqueci de dizer, mas acredito não haver problema, pois to fazendo esta query para ler uma tabela DBF
Abs
É Access !? Creio que ele não suporte subqueries.
Olá Motta.
Não, não é Access, é tabela xBase.
Abs.
Renato Reis
Realmente não conheço.
Bom, fiz desta forma:
select movempr, movmatr, movdata, movvalor
FROM SCCAMOVC
GROUP BY movempr, movmatr, movdata, movvalor
HAVING sum(movvalor) > 0
Com isto, seleciono todos os registros de lançamento agrupados pelo movempr e movmatr.
Mas ainda há um problema! Caso o campo movvalor tenha como conteúdo um valor negativo, o registro é descartado. NÃO PODE! Na verdade quero descartar todos os registro de um determinado sócio, caso o somatório final seja <=0
Até
select movempr, movmatr, movdata, movvalor
FROM SCCAMOVC
GROUP BY movempr, movmatr, movdata, movvalor
HAVING sum(movvalor) <> 0
ou
select movempr, movmatr, movdata, movvalor
FROM SCCAMOVC
GROUP BY movempr, movmatr, movdata, movvalor
HAVING sum(movvalor) != 0
Motta, ok isso mesmo, bastava trocar o sinal de > 0 para <> 0, mas acontece que nos lançamentos podem haver retiradas e caso aconteca retirada do saldo total, o restante será igual a Zero, então, estes registros para o socio devem ser desconsiderados.<br />Devo apenas considerar os sócios cujo somatorio total seja > 0, mesmo que tenham havido restiradas.<br />Ok?<br />Abc
Tentei isso:
select movempr, movmatr, movdata, movvalor FROM SCCAMOVC where in (select sum(movvalor) as soma from sccamovc where soma > 0 GROUP BY movempr, movmatr)
Apresenta o erro: function name is missing
Preciso de grupos de registro(Contribuições e retiradas) por empresa e matricula onde o saldo(Contribuições - retiradas) seja > 0
Alguém sabe do que se trata e como posso fazer?
Att
select movempr, movmatr, movdata, sum(movvalor)FROM SCCAMOVC GROUP BY movempr, movmatr, movdataHAVING sum(movvalor) != 0
é isto ?!
Não Motta. Vou ter que fazer de forma Luzitana mesmo. Valeu!!
Depois vou descrever como fiz pra ver se teria ou não a solução em uma única query.
Abs
select movempr, movmatr, movdata, movvalor
FROM SCCAMOVC