Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Group by Fecha

Estas en el tema de Group by Fecha en el foro de SQL Server en Foros del Web. Buenas tardes, Estoy intentando extraer de la base de datos un sumatorio agrupado por fecha, el problema es que el campo fecha es un smalldatetime ...
  #1 (permalink)  
Antiguo 14/10/2009, 09:01
 
Fecha de Ingreso: febrero-2006
Mensajes: 38
Antigüedad: 18 años, 2 meses
Puntos: 0
Pregunta Group by Fecha

Buenas tardes,

Estoy intentando extraer de la base de datos un sumatorio agrupado por fecha, el problema es que el campo fecha es un smalldatetime y aparte de la fecha vienen la hora.

La pregunta es como podría realizar una consulta que me mostrase la suma del campo cantidad agrupado por el campo fecha. Realizando busquedas por el foro he encontrado esta respuesta
Código:
Select Sum(cli_num), ltrim(rtrim(convert(char,datepart(day,cli_fec)))) + ' ' + datename(month,cli_fec) + ' ' + datename(Year,cli_fec) From CLIENTE
group by ltrim(rtrim(convert(char,datepart(day,cli_fec)))) + ' ' + datename(month,cli_fec) + ' ' + datename(Year,cli_fec),datepart(day,cli_fec) + datepart(month,cli_fec) + datepart(year,cli_fec)
order by datepart(day,cli_fec) + datepart(month,cli_fec) + datepart(year,cli_fec)
Pero el problema es que la fecha la montan en formato dia Mes Año (1 Abril 2009) y a la hora de ordenarlas no lo hace correctamente, yo quisiera ver las fechas en formato (01/04/2009) y que las ordene por fecha

Bueno después de este rollo a ver si alguién puede ayudarme, gracias
  #2 (permalink)  
Antiguo 14/10/2009, 09:08
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Group by Fecha

Es más o menos así:

Código:
SELECT campo1, campo2, ..
FROM tuTabla
WHERE  ...
GROUP BY   CONVERT(datetime, campoFecha, 103)
ORDER BY CONVERT(datetime, campoFecha, 103)
  #3 (permalink)  
Antiguo 14/10/2009, 09:37
 
Fecha de Ingreso: febrero-2006
Mensajes: 38
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Group by Fecha

Muchas gracias Daniel pero no me las agrupa por fecha me devuelve lo siguiente:

Código HTML:
95,00	2009-04-01 16:30:00.000
-83,00	2009-04-02 14:00:00.000
95,00	2009-04-02 15:10:00.000
95,00	2009-04-02 16:40:00.000
-110,00	2009-04-03 15:20:00.000
-91,00	2009-04-05 14:20:00.000
95,00	2009-04-05 15:40:00.000
como ves el día 02/04/2009 hay tres movimientos y no me devuelve la suma.

Este es el código que he puesto

Código:
Select Sum(profit),
convert(datetime, fecha, 103)
From data_Bind
group by CONVERT(datetime, Fecha, 103)
  #4 (permalink)  
Antiguo 14/10/2009, 09:39
 
Fecha de Ingreso: febrero-2006
Mensajes: 38
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Group by Fecha

Buscando en Google, he visto que para el sql server 2008 esta la funcion Cast (Fecha as Date), pero en el sql server 2005 no tengo esa opción.

Saludos
  #5 (permalink)  
Antiguo 14/10/2009, 09:46
 
Fecha de Ingreso: febrero-2006
Mensajes: 38
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Group by Fecha

Muchas gracias por tu respuesta daniel00, ya encontre la solución

Código:
select sum (profit), dateadd(day, datediff(day, '99991231', fecha), '99991231') AS theDay  from data_Bind
group by dateadd(day, datediff(day, '99991231', fecha), '99991231')
Saludos
  #6 (permalink)  
Antiguo 14/10/2009, 13:59
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Group by Fecha

Cita:
Iniciado por elwilly Ver Mensaje
Buscando en Google, he visto que para el sql server 2008 esta la funcion Cast (Fecha as Date), pero en el sql server 2005 no tengo esa opción.

Saludos
Eso es porque en SQL Server 2008 ya existe un tipo de dato Date, que solo guarda la fecha y no la hora.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:52.