SQL - Obtener la primera fecha de cada mes por cliente

   
Vista:

Obtener la primera fecha de cada mes por cliente

Publicado por e (8 intervenciones) el 21/04/2014 12:44:58
Deseo obtener el primer día del mes y año además del valor de pagos en esa fecha por cada empresa en la tabla.
Tabla que describo:
Tabla tmp
columnas
empresa,fecha,pagos
Fecha es de tipo DATE ej.(2007-8-13)
(Por si tuviera algún interés la B.D. es Mysql)

Gracias de antemano por cualquier sugerencia. Soy bastante inexperto en sql y me pierdo con los inner join y/o subselects que tal vez sean necesarios para resolver esta aparentemente simple query.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Obtener la primera fecha de cada mes por cliente

Publicado por Isaias (690 intervenciones) el 21/04/2014 16:20:46
Utiliza la función MIN(Campo)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener la primera fecha de cada mes por cliente

Publicado por ecliten (8 intervenciones) el 21/04/2014 17:26:11
Gracias por tu respuesta, ya lo había intentado con esta función min pero sin éxito.
Tal vez en el enunciado de la consulta no he sido lo suficientemente preciso, Lo que deseo es encontrar los registros correspondientes al primer día, con actividad, de cada mes. Normalmente deberé obtener 12(uno por cada mes)registros por cada año y por cada empresa.
¡Sigo necesitando ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Obtener la primera fecha de cada mes por cliente

Publicado por xve (238 intervenciones) el 21/04/2014 18:06:47
Hola ecliten, seria algo así:

1
2
SELECT *,min(fecha) as FechaMin FROM `tmp`
GROUP BY MONTH(fecha),empresa

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener la primera fecha de cada mes por cliente

Publicado por ecliten (8 intervenciones) el 21/04/2014 18:55:58
Muchas gracias xve, me has hecho ver un grosero error conceptual.
La query que "no me funcionaba" era:
SELECT *,min(day(fecha)) from `tmp` GROUP BY MONTH(fecha),YEAR(fecha), empresa

Siguiendo tus instrucciones he utilizado MIN(fecha) en lugar de MIN(DAY(fecha)) y he completado los GROUP BY con año y empresa y el resultado es el esperado.
SELECT *,min(fecha) from tmp GROUP BY MONTH(fecha),YEAR(fecha), empresa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Obtener la primera fecha de cada mes por cliente

Publicado por xve (238 intervenciones) el 21/04/2014 19:46:38
Gracias por compartirlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener la primera fecha de cada mes por cliente

Publicado por E. Cliten (8 intervenciones) el 25/04/2014 08:41:38
Después de unos días que trataba de solucionar una query algo más complicada me he dado cuenta de que la select no actúa como yo esperaba, solamente el fruto de la casualidad hizo que pareciera correcta la query.
He realizado dos querys sobre la misma tabla, una para seleccionar las fechas menores y pagos y otra para seleccionar las fechas mayores y pagos.
tabla en mysql nombre bor (fecha, pagos)
Nótese que la columna Max(fecha) no coincide con fecha, en cambio si coincide con la versión Min(fecha) (SUPONGO POR CASUALIDAD)
Por lo que el campo pagos no se corresponde con la fecha de Max(fecha)

De donde se deduce que esta query no es la adecuada para seleccionar los primeros o últimos registros de cada mes y año con sus pagos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
select fecha, pagos, Max(fecha) from bor group by Year(fecha), Month(fecha);
+------------+-------+------------+
| fecha      | pagos | Max(fecha) |
+------------+-------+------------+
| 2011-01-03 |   135 | 2011-01-31 |
| 2011-02-01 |   283 | 2011-02-28 |
| 2011-03-01 |   256 | 2011-03-31 |
| 2011-04-01 |   212 | 2011-04-29 |
| 2011-05-02 |   139 | 2011-05-31 |
 
 
select fecha, pagos, Min(fecha) from bor group by Year(fecha), Month(fecha);
+------------+-------+------------+
| fecha      | pagos | min(fecha) |
+------------+-------+------------+
| 2011-01-03 |   135 | 2011-01-03 |
| 2011-02-01 |   283 | 2011-02-01 |
| 2011-03-01 |   256 | 2011-03-01 |
| 2011-04-01 |   212 | 2011-04-01 |
| 2011-05-02 |   139 | 2011-05-02 |

¡Sigo necesitando ayuda!, por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener la primera fecha de cada mes por cliente

Publicado por Meda (1 intervención) el 18/02/2015 00:49:16
Tengo el mismo problema encontraste alguna respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar