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

Problema con select

Estas en el tema de Problema con select en el foro de Bases de Datos General en Foros del Web. Hola, tengo un problema con una consulta SQL, resulta que debo sacar una serie de datos para un rango de fechas (concretamente contar el nº ...
  #1 (permalink)  
Antiguo 02/02/2011, 07:53
 
Fecha de Ingreso: junio-2008
Mensajes: 24
Antigüedad: 15 años, 10 meses
Puntos: 0
Problema con select

Hola,
tengo un problema con una consulta SQL, resulta que debo sacar una serie de datos para un rango de fechas (concretamente contar el nº de apariciones)
Para una fecha si lo consigo pero para el rango no:

Dejo aquí la consulta para una fecha, a ver si alguien me puede echar una mano.

Saludos y gracias de antemano

SELECT COUNT(gup_peso) AS Total,
(SELECT COUNT(gup_peso) AS Total1
FROM dbo.tFacturas AS t2
WHERE (Fecha_Factura = @VarFechaInicial) AND (gup_peso LIKE '%_020 ')) AS Menos20,
(SELECT COUNT(gup_peso) AS Total1
FROM dbo.tFacturas AS t2
WHERE (Fecha_Factura = @VarFechaInicial) AND (gup_peso LIKE '%_050 ')) AS Menos50,
(SELECT COUNT(gup_peso) AS Total1
FROM dbo.tFacturas AS t2
WHERE (Fecha_Factura = @VarFechaInicial) AND (gup_peso LIKE '%_100 ')) AS Menos100,
(SELECT COUNT(gup_peso) AS Total1
FROM dbo.tFacturas AS t2
WHERE (Fecha_Factura = @VarFechaInicial) AND (NOT (gup_peso LIKE '%_020 ' OR
gup_peso LIKE '%_050 ' OR
gup_peso LIKE '%_100 '))) AS Mas100, Fecha_Factura
FROM dbo.tFacturas AS tFacturas_1
WHERE (Fecha_Factura = @VarFechaInicial)
GROUP BY Fecha_Factura
  #2 (permalink)  
Antiguo 02/02/2011, 09:28
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Problema con select

Hola flashnet,

No mencionas qué problema es el que tienes con la consulta, es decir, por lo que puedo ver en en la consulta que pones en tu post estás consultando los resultados de una sola fecha (en todos tus WHERE tienes algo como esto Fecha_Factura = @VarFechaInicial)

Para consultar un rango de fechas lo deberías hacer así:

Código:
Fecha_Factura >= @VarFechaInicial and Fecha_Factura <= @VarFechaFinal
Un problema frecuente suele ocurrir al manejar fechas reside en que los campos donde se almacena este dato son de tipo DATETIME, es decir que almacenan la fecha Y LA HORA, por lo que es necesario que al momento de hacer las comparaciones se considere SÓLO LA FECHA y no las horas.

No mencionas qué manejador de BD estás utilizando, pero por la sintaxis de tu consulta puedo suponer que se trata de SQL Server, Si es así, entonces es conveniente que manejes las fechas con el formato ANSI (yyyy-mm-dd), te dejo un artículo bastante interesante acerca del manejo de fechas en SQL server

http://www.mug.org.ar/SQL/ArticSQL/240.aspx

Si utilizas otro manejador, pues es cuestión que busques las funciones específicas para poder darle formato a un campo fecha, es cuestión de que revises cuál le corresponde.

Saludos
Leo
  #3 (permalink)  
Antiguo 03/02/2011, 01:01
 
Fecha de Ingreso: junio-2008
Mensajes: 24
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema con select

Antes de nada leonardo_josue gracias por responder.

Mi problema está a la hora de sacar el select, te pongo un ejemplo:

Dia Cantidad1 Cantidad2
1/1/2011 1 2
1/1/2011 3 5
2/1/2011 9 7
2/1/2011 1 4

y el resultado sería

Dia Cantidad1 Cantidad2
1/1/2011 4 7
2/1/2011 10 11

Agradecería mucho que alguien me ayudara con está consulta.

Gracias de antemano
  #4 (permalink)  
Antiguo 03/02/2011, 09:15
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Problema con select

Hola de nuevo Flashnet:

Estás manejando cosas completamente diferentes en tus post. Por un lado mencionas que tienes un problema con rango de fechas, pero en el ejemplo que pones no estás manejando ningún rango de fechas... ojo con eso.

En cuanto a tu consulta, debes de utilizar el operador SUM y no el COUNT, ya que este último sirve como su traducción lo indica para contar el número de registros que cumplen con cierta condición. En tu caso necesitas agrupar por fecha y sumarizar los campos. Sigues sin mencionar qué manejador de BD estás utilizando, te pongo un ejercicio completo en SQL Server, lo importante es la consulta final:

Código SQL:
Ver original
  1. DECLARE @Tabla TABLE (Dia datetime, Cantidad1 INT, Cantidad2 INT)
  2. INSERT INTO @Tabla VALUES ('2011-01-01', 1 ,2)
  3. INSERT INTO @Tabla VALUES ('2011-01-01', 3, 5)
  4. INSERT INTO @Tabla VALUES ('2011-02-02', 9, 7)
  5. INSERT INTO @Tabla VALUES ('2011-02-02', 1, 4)
  6. SELECT dia, SUM(Cantidad1)TotalCantidad1, SUM(Cantidad2) TotalCantidad2
  7. FROM @Tabla GROUP BY dia

Como te comenté en el post anterior, el único cuidado que debes tener es verificar si la fecha se almacena con hora o no.

Saludos
Leo.

Etiquetas: select
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 10:18.