Fazer SUM em campo data ? SQL
Boa tarde Galera,
Estou com a seguinte dúvida, como não é possivel fazer um SUM em um campo Data, gostaria de pedir a ajuda dos amigos.
Preciso gerar um relatório, no qual o usuário podera inserir DataInicial e DataFinal, e preciso trazer no meu relatório o valor total do meu campo FC.MFurtada de cada dia, só lembrando que gravo Hora(2007-08-01 07:40:00.000) no meu banco.
Segue abaixo a principio e meu código.
Abraço a todos.
Maic Nogueira
Estou com a seguinte dúvida, como não é possivel fazer um SUM em um campo Data, gostaria de pedir a ajuda dos amigos.
Preciso gerar um relatório, no qual o usuário podera inserir DataInicial e DataFinal, e preciso trazer no meu relatório o valor total do meu campo FC.MFurtada de cada dia, só lembrando que gravo Hora(2007-08-01 07:40:00.000) no meu banco.
Segue abaixo a principio e meu código.
SELECT SUM(FC.MFurtada) as TotalMesFurtada, FC.DataConstatacao FROM FurtoCabo FC INNER JOIN Ocorrencia O ON (FC.Cod_Ocorrencia = O.Cod_Ocorrencia) INNER JOIN TipoCabo TC ON (FC.Cod_TipoCaboFurtado = TC.Cod_TipoCabo) INNER JOIN UF UF ON (O.Cod_UF = UF.Cod_UF) INNER JOIN Geo Geo ON (UF.Cod_Geo = Geo.Cod_Geo) WHERE O.Deletado = 0 AND FC.DataConstatacao >= ´01/08/2007´ + ´ ´ + ´00:00:00´ AND FC.DataConstatacao <= ´01/08/2007´ + ´ ´ + ´23:59:59´ GROUP BY FC.DataConstatacao
Abraço a todos.
Maic Nogueira
Maic.rio
Curtidas 0
Respostas
Emerson Nascimento
23/08/2007
como você não informou o banco de dados, não dá pra saber se a instrução abaixo irá funcionar. de qualquer forma, faça um teste:
SELECT convert(datetime, cast(FC.DataConstatacao as varchar(11))) Dia, SUM(FC.MFurtada) as TotalMesFurtada FROM FurtoCabo FC INNER JOIN Ocorrencia O ON (FC.Cod_Ocorrencia = O.Cod_Ocorrencia) INNER JOIN TipoCabo TC ON (FC.Cod_TipoCaboFurtado = TC.Cod_TipoCabo) INNER JOIN UF UF ON (O.Cod_UF = UF.Cod_UF) INNER JOIN Geo Geo ON (UF.Cod_Geo = Geo.Cod_Geo) WHERE O.Deletado = 0 AND FC.DataConstatacao >= ´01/08/2007´ + ´ ´ + ´00:00:00´ AND FC.DataConstatacao <= ´01/08/2007´ + ´ ´ + ´23:59:59´ GROUP BY convert(datetime, cast(FC.DataConstatacao as varchar(11)))
GOSTEI 0
Maic.rio
23/08/2007
Vlw Emerson, funcionou perfeitamente !
Estou utilizando SQL SErver 2005 !
Abraço...
Estou utilizando SQL SErver 2005 !
Abraço...
GOSTEI 0
Maic.rio
23/08/2007
Galera,
Me tirem mais essa dúvida.
Anteriomente, a dúvida era sobre agrupar por dias.
Agora não estou conseguindo agrupar por mês !!
Como ficaria?
Forte abrço a todos !
Maic
Me tirem mais essa dúvida.
Anteriomente, a dúvida era sobre agrupar por dias.
Agora não estou conseguindo agrupar por mês !!
Como ficaria?
Forte abrço a todos !
Maic
GOSTEI 0
Emerson Nascimento
23/08/2007
/* por dia */ SELECT convert(varchar(12), getdate(), 103) Dia, SUM(FC.MFurtada) as TotalMesFurtada FROM FurtoCabo FC INNER JOIN Ocorrencia O ON (FC.Cod_Ocorrencia = O.Cod_Ocorrencia) INNER JOIN TipoCabo TC ON (FC.Cod_TipoCaboFurtado = TC.Cod_TipoCabo) INNER JOIN UF UF ON (O.Cod_UF = UF.Cod_UF) INNER JOIN Geo Geo ON (UF.Cod_Geo = Geo.Cod_Geo) WHERE O.Deletado = 0 AND FC.DataConstatacao >= ´01/08/2007´ + ´ ´ + ´00:00:00´ AND FC.DataConstatacao <= ´01/08/2007´ + ´ ´ + ´23:59:59´ GROUP BY convert(varchar(12), getdate(), 103)
/* por mes */ SELECT right(convert(varchar(12), getdate(), 103), 7) Mes, SUM(FC.MFurtada) as TotalMesFurtada FROM FurtoCabo FC INNER JOIN Ocorrencia O ON (FC.Cod_Ocorrencia = O.Cod_Ocorrencia) INNER JOIN TipoCabo TC ON (FC.Cod_TipoCaboFurtado = TC.Cod_TipoCabo) INNER JOIN UF UF ON (O.Cod_UF = UF.Cod_UF) INNER JOIN Geo Geo ON (UF.Cod_Geo = Geo.Cod_Geo) WHERE O.Deletado = 0 AND FC.DataConstatacao >= ´01/08/2007´ + ´ ´ + ´00:00:00´ AND FC.DataConstatacao <= ´01/08/2007´ + ´ ´ + ´23:59:59´ GROUP BY right(convert(varchar(12), getdate(), 103), 7)
GOSTEI 0