FAZER SELECT COM SUM

WATZECK 28/06/2016 14:16:52
#464190
Boa tarde galera.
Estou com uma dúvida para realizar um SELECT com SUM.
Segue abaixo parte do código que eu utilizei:

Dim datainical As DateTime = Convert.ToDateTime(frmConsultar_Copias.dtpInicial.Text)
Dim datafinal As DateTime = Convert.ToDateTime(frmConsultar_Copias.dtpFinal.Text)


_sql = [Ô]SELECT NumCond, NomeCond, Quantidade FROM Copias WHERE DataEmissao BETWEEN # [Ô] & datainicial.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# AND # [Ô] & datafinal.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# ORDER BY NumCond, DataEmissao ASC[Ô]

Eu gostaria de realizar essa consulta, e simultaneamente somar o campo “Quantidade” no período selecionado pela cláusula WHERE.
Tipo assim, eu quero um relatório de todos os clientes nessas datas, e gostaria de fazer a soma de tudo que foi lançado para cada cliente nesse período selecionado nos DateTimePicker.
Existe essa possibilidade, ou eu teria que fazer duas consultas distintas.
Desde já, muito obrigado.


MICHAELL 28/06/2016 16:48:15
#464207
Resposta escolhida
Utilizando SUM() voce tem que agrupar os outros campos do select.

Não pode agrupar nem ordenar pelos campos que não sejam agrupados.
Se voce agrupar o campo data por exemplo, ele não soma de todas as data, e sim de cada data.

Se seus clientes estao na tabela [Ô]Clientes[Ô], ficaria mais ou menos assim:

  SELECT Clientes.Nome, SUM(Quantidade) as total 
FROM Copias, Clientes

WHERE DataEmissao BETWEEN # [Ô] & datainicial.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# AND # [Ô] & datafinal.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]#

AND Clientes.id_cliente = Copias.id_cliente

GROUP BY Cliente.Nome


é para retornar mais ou menos assim:

Cliente A - R$ 100,00
Cliente B - R$ 200,00
WATZECK 09/07/2016 23:27:11
#464673
Boa noite Michaell

Obrigado pela resposta, vou testar o código aqui, vlw.

Vou fechar o tópico, pq vou demorar um pouco pra testar, devido estar fazendo um curso de infra, e ter que deixar um pouco de lado esse projeto.

De qualquer forma, muito obrigado pela força.
Tópico encerrado , respostas não são mais permitidas