SQL - Filtro de data e soma de valores

SQL Server

22/08/2014

Olá!

Tenho uma tabela no SQL no qual em uma coluna tenho datas, no formato mes/dia/ano, e na outra diversos valores. Para cada data, tenho várias linhas de valores, por exemplo:
7//20/2014 50,00
7/20/2014 10,00
7/20/2014 15,00
8/20/2014 10,00
8/20/2014 20,00
9/20/2014 10,00

Enfim, gostaria de saber como posso fazer um filtro que some o total de cada data (em um intervalo determinado por mim). Por exemplo, esse filtro liberaria o seguinte resultado se os parametros fossem 7/20/2014 e 8/20/2014:

7/20/2014 75,00
8/20/2014 30,00


Muito obrigado!
Rafael Santos

Rafael Santos

Curtidas 0

Melhor post

Celso Medeiros

Celso Medeiros

22/08/2014

Acredito que o que você queira seja o seguinte:

select data, sum(valor)
from tabela
where (data >= '7/20/2014' and data <= '8/20/2014')
group by data
GOSTEI 1

Mais Respostas

Fabiano Carvalho

Fabiano Carvalho

22/08/2014

select
	data,
	sum(valor)
from tabela
where (data = '7/20/2014' and valor = 75.00) or 
(data = '8/20/2014' and valor = 30.00)
GOSTEI 0
David Styveen

David Styveen

22/08/2014

Exatamente o que o Celso Medeiros postou.

Na cláusula "where" pode ser usado o betwen ao invés de "and", mas em tese é a mesma coisa.

where data '7/20/2014' and '8/20/2014' 


Abraços
GOSTEI 0
Emerson Brito

Emerson Brito

22/08/2014

Bom dia prezado!

O Mais ideal, (pois vc. pode querer agrupar outras datas), e se quiser uma data específica aí vc. usa a clausula WHERE:

-- Agrupa Totalizando por datas:

SELECT Data, Sum(Valor) as Valor
FROM Tabela
GROUP BY Data


-- Se quiser uma data específica coloque o WHERE:

SELECT Data, Sum(Valor) as Valor
FROM Tabela
WHERE Data = 'AAAAMMYY'
GROUP BY Data


--IMPORTANTE: Se o seu campo de data contiver a hora gravada, ele vai levar em consideração no agrupamento, aí vc. coloca um CONVERT no campo Data para ele desprezar a hora colocando tudo em 00:00:00.000 assim:

SELECT CAST(CONVERT(CHAR(10),Data,120) AS DATETIME) as Data, sum(t1.Valor) as Valor
FROM Tabela
GROUP BY CAST(CONVERT(CHAR(10),Data,120) AS DATETIME)


Obrigado!
GOSTEI 0
POSTAR