SoloCodigo

Bases de Datos => SQL Server => Mensaje iniciado por: JaviMarciano en Miércoles 28 de Abril de 2010, 03:39

Título: Consulta por mes
Publicado por: JaviMarciano en Miércoles 28 de Abril de 2010, 03:39
Hola para hacer una consulta por meses hago lo siguiente:

Código: SQL
  1. SELECT datepart(mm,Fecha)AS Mes, SUM(Importe)AS Total
  2. FROM [Toot].[dbo].[T_Gastos]
  3.  
  4. GROUP BY datepart(mm,Fecha)
  5.  

Mes........Total
1...........500
2...........550
3...........700
.
.
.

El problema es que si introd. un registro de otro año lo suma con los del mismo mes del otro año
como puedo discriminar por año

La Tabla es la siguiente

T_Gastos:
Importe
Destino
Fecha
Título: Re: Consulta por mes
Publicado por: Sagma en Miércoles 28 de Abril de 2010, 22:29
debes usar la condicion WHERE.

SELECT datepart(mm,Fecha)AS Mes, sum(Importe)AS  Total
FROM [Toot].[dbo].[T_Gastos]
WHERE fecha between "01/01/2008" and "31/12/2008"  
GROUP BY datepart(mm,Fecha)

pero por ahi he escuchado que el BETWEEN es un poco no se en SQL, segun dicen, que me corrijan si estoy mal, hay que usar:

WHERE fecha >= "01/01/2008"
AND fecha <= "31/12/2008"

suerte.  :comp:
Título: Re: Consulta por mes
Publicado por: ElNapster en Jueves 29 de Abril de 2010, 21:58
Citar
pero por ahi he escuchado que el BETWEEN es un poco no se en SQL, segun dicen, que me corrijan si estoy mal, hay que usar:

Puedes hacer el uso del BETWEEN sin ningun problema en SQL  Server  ;)

 :comp:
Título: Re: Consulta por mes
Publicado por: JaviMarciano en Jueves 29 de Abril de 2010, 22:28
Esa es la manera correcta de hacerlo?
no hay alguna forma de hacerlo ingresando solo el año?
Título: Re: Consulta por mes
Publicado por: F_Tanori en Jueves 29 de Abril de 2010, 23:08
A ver si entendi ...

Si agruparas tambien por año obtendrias el resultado deseado creo ...

Código: SQL
  1. SELECT datepart(mm,Fecha)AS Mes,datepart(YYYY,Fecha) 'Anio', SUM(Importe)AS Total
  2. FROM T_Gastos
  3. GROUP BY datepart(mm,Fecha),datepart(YYYY,Fecha)
  4.  

Si quieres un año en especifico

Código: SQL
  1. SELECT datepart(mm,Fecha)AS Mes,datepart(YYYY,Fecha) 'Anio', SUM(Importe)AS Total
  2. FROM T_Gastos
  3. WHERE datepart(YYYY,Fecha) = 2007
  4. GROUP BY datepart(mm,Fecha),datepart(YYYY,Fecha)
  5.  

Ordenando

Código: SQL
  1. SELECT datepart(mm,Fecha)AS Mes,datepart(YYYY,Fecha) 'Anio', SUM(Importe)AS Total
  2. FROM T_Gastos
  3. WHERE datepart(YYYY,Fecha) = 2007
  4. GROUP BY datepart(mm,Fecha),datepart(YYYY,Fecha)
  5. ORDER BY datepart(mm,Fecha),datepart(YYYY,Fecha)
  6.  
  7.  


Saludos
Título: Re: Consulta por mes
Publicado por: JaviMarciano en Viernes 30 de Abril de 2010, 05:27
buenisimo muchas gracias
es exact lo que quería