DICA QUERY SQL
Pessoal, estou usando a query abaixo para pegar ja totalizando, dados sobre entradas de produtos, esta filtrando certinho, porém preciso pegar também o saldo, de uma terceira tabela, só que esta, separa o saldo por grade, ou seja, ao invés de um registro, pode ter até 6, e ai acaba multiplicando o valor por 6, mesmo usando group by ou distinct. Teria como fazer, ou seria necessário uma segunda etapa ?
sql = [Ô]select A.codigo,A.descricao,sum(B.qtde) as qtcompra, sum(b.qtde * B.valor) as vlcompra from produtos A, entradas B [Ô]
sql = sql & [Ô] where B.data BETWEEN [Ô] & FormataData(dt1.value, dbtype) & [Ô] AND [Ô] & FormataData(dt2.value, dbtype) & [Ô] [Ô]
sql = sql & [Ô] and B.tipo = [ô]E[ô] [Ô]
sql = sql & [Ô] and A.codigo = B.produto[Ô]
sql = [Ô]select A.codigo,A.descricao,sum(B.qtde) as qtcompra, sum(b.qtde * B.valor) as vlcompra from produtos A, entradas B [Ô]
sql = sql & [Ô] where B.data BETWEEN [Ô] & FormataData(dt1.value, dbtype) & [Ô] AND [Ô] & FormataData(dt2.value, dbtype) & [Ô] [Ô]
sql = sql & [Ô] and B.tipo = [ô]E[ô] [Ô]
sql = sql & [Ô] and A.codigo = B.produto[Ô]
Bem, se você não quer mudar drasticamente, você pode usar uma sub-query para essa nova tabela, trazendo dela já somado/agrupado.
uma sub junto com essa query que postei ?, no caso agrupando tbm, ai ficaria linkado com o item ?, seria uma boa idéia, nunca fiz assim, vou ver se consigo aqui...
Boa tarde,
Algo assim imagino que funcione:
Algo assim imagino que funcione:
sql = [Ô]select A.codigo,A.descricao,sum(B.qtde) as qtcompra, sum(b.qtde * B.valor) as vlcompra from produtos A, entradas B, (Select Max(C.tsaldo) From SALDO C Where C.produto = A.codigo) as SaldoProduto [Ô]
sql = sql & [Ô] where B.data BETWEEN [Ô] & FormataData(dt1.value, dbtype) & [Ô] AND [Ô] & FormataData(dt2.value, dbtype) & [Ô] [Ô]
sql = sql & [Ô] and B.tipo = [ô]E[ô] [Ô]
sql = sql & [Ô] and A.codigo = B.produto[Ô]
Desculpa, reformulando...
sql = [Ô]select A.codigo,A.descricao,sum(B.qtde) as qtcompra, sum(b.qtde * B.valor) as vlcompra, (Select Max(C.tsaldo) From SALDO C Where C.produto = A.codigo) as SaldoProduto from produtos A, entradas B [Ô]
sql = sql & [Ô] where B.data BETWEEN [Ô] & FormataData(dt1.value, dbtype) & [Ô] AND [Ô] & FormataData(dt2.value, dbtype) & [Ô] [Ô]
sql = sql & [Ô] and B.tipo = [ô]E[ô] [Ô]
sql = sql & [Ô] and A.codigo = B.produto[Ô]
Eu havia feito um pouco diferente, mas ficou melhor que a encomenda...
Muito obrigado.
Muito obrigado.
Tópico encerrado , respostas não são mais permitidas