Olá!
janio escreveu:Mas posso colocar isso dentro de um Do While e pegar apenas uma dessas datas.
Mas como vai identificar o saldo final de cada data?
janio escreveu:Uma coisa q notei foi q esse negocio de query dentro de query deixa as consultas muuuuuuuuuito mais lentas.
Depende do teu modelo de dados. Se você tiver nas tuas tabelas os índices apropriados fica "bala".
Além disto, o modo como você está fazendo não é indicado. Colocou um SELECT com GROUP BY para criar uma coluna (coluna V) e depois fazer o JOIN com a outra consulta. Creio que a forma que te passei será mais rápida.
Dica básica para tabelas de bancos de dados relacionais: se a coluna não é a PRIMARY KEY da tabela (sempre tenha uma PK em cada tabela), procure criar índice para todos os campos usados frequentemente na cláusula WHERE dos teus SELECTS.
Crie o índice abaixo na tua tabela e verifique se houve alguma alteração na performance (tempo de resposta) da consulta:
ALTER TABLE `a04mov` ADD INDEX `idx_a04mov_CodPrd_Dat_Mov`(`CodPrD`, `DatMov`);
Minha tabela de testes tem apenas 18 linhas. Tanto a tua query quanto a minha executaram num tempo médio de 15 milissegundos com ou sem o índice (MariaDB). Verifique no teu sistema, onde tem bastante informação nas tabelas, se o tempo de resposta melhora.