Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con MySQL (https://www.clubdelphi.com/foros/showthread.php?t=41454)

pelaorb68 15-03-2007 21:28:37

Ayuda con MySQL
 
Hola a todos, necesito si me pueden ayudar con una consulta SQL. Lo que necesito hacer es lo siguiente:

Tengo una Tabla que contiene movimiento por Fecha más un campo Precio. Lo que necesito es agrupar los movimiento por "Año-Mes" y con el último Precio correspondiente a cada mes.

Hice una consulta con MAX() y GROUP BY ... me retorna los registros agrupados por "Año-Mes" pero el Precio corresponde al primero de cada mes.

He hecho varias puebas y nada.......

Ejemplo:


Registros en la Tabla
Fecha Precio
02-01-2007 168,35
03-01-2007 170,49
10-01-2007 169,90
29-01-2007 170,85
31-01-2007 172,00
01-02-2007 175,00
05-02-2005 175,12
26-02-2006 173,16
28-02-2006 168,30
01-03-2006 167,99
06-03-2007 171,53
12-03-2007 175,14
14-03-2007 171,88


Resultado del Query

MAX(Fecha) Precio
31-01-2007 168,35
28-02-2007 175,00
14-03-2005 171,88

Query


Código SQL [-]
SELECT MAX(Fecha), Precio FROM Movimientos WHERE ............ GROUP BY DATE_FORMAT(Fecha,"%Y-%m")


Espero me puedan ayudar....


Agradecido...

fjcg02 15-03-2007 23:30:16

Cita:

Empezado por pelaorb68
Ejemplo:


Registros en la Tabla
Fecha Precio
02-01-2007 168,35
03-01-2007 170,49
10-01-2007 169,90
29-01-2007 170,85
31-01-2007 172,00
01-02-2007 175,00
05-02-2005 175,12
26-02-2006 173,16
28-02-2006 168,30
01-03-2006 167,99
06-03-2007 171,53
12-03-2007 175,14
14-03-2007 171,88


Resultado del Query

MAX(Fecha) Precio
31-01-2007 168,35
28-02-2007 175,00
14-03-2005 171,88

Query


Código SQL [-]
SELECT MAX(Fecha), Precio FROM Movimientos WHERE ............ GROUP BY DATE_FORMAT(Fecha,"%Y-%m")


Espero me puedan ayudar....


Agradecido...

Un par de cosas:
Cómo quieres el último precio y la función de agrupado (MAX )la pones en el campo fecha?
No conozco MySQL a fondo, pero prueba esto

Código SQL [-]
SELECT DATE_FORMAT(Fecha,"%Y-%m") AS Fecha, LAST(Precio) AS MAx_Precio FROM Movimientos
 WHERE .....
GROUP BY DATE_FORMAT(Fecha,"%Y-%m")
En teoría te dará el ultimo precio, pero dependerá de cómo salgan ordenados los registros de la query. No sé si puedes incluir order by Fecha si te sale bien.

Suerte y un saludo

pelaorb68 16-03-2007 00:11:00

Ayuda con MySQL
 
Cita:

Empezado por fjcg02
Un par de cosas:
Cómo quieres el último precio y la función de agrupado (MAX )la pones en el campo fecha?
No conozco MySQL a fondo, pero prueba esto


Código SQL [-]
SELECT DATE_FORMAT(Fecha,"%Y-%m") AS Fecha, LAST(Precio) AS MAx_Precio FROM Movimientos
 WHERE .....

GROUP BY DATE_FORMAT(Fecha,"%Y-%m")



En teoría te dará el ultimo precio, pero dependerá de cómo salgan ordenados los registros de la query. No sé si puedes incluir order by Fecha si te sale bien.

Suerte y un saludo


Gracias por tu respuesta, pero el MAX en fecha es para que me retorne la fecha máxima(o última) por cada Año/Mes....No le pongo MAX a Precio, porque me devolvería el precio Mayor del Año/Mes y yo necesito el Precio correspondiente a la fecha Mayor de cada Año/Mes.

Estoy ocupando MySql versión 4.1.12a-nt y la función LAST() no la reconoce....si mal no recuerdo esa función puede ocuparse con Access(jet)....a no ser que exista una versión de MySql que la incluya......He leido varias veces el Manual de MySql y creo que no aparece tal función......

De todas formas agradezco tu tiempo e interés.....

Saludos,

basti 16-03-2007 01:36:53

Si la versión de MySql que usas admite subconsultas:
Código SQL [-]
  Select DATE_FORMAT(Fecha,"%Y-%m"), Precio from Movimientos where fecha in (SELECT MAX(Fecha) FROM Movimientos  GROUP BY DATE_FORMAT(Fecha,"%Y-%m"))

pelaorb68 16-03-2007 22:32:47

Ayuda con MySQL
 
Cita:

Empezado por basti
Si la versión de MySql que usas admite subconsultas:

Código SQL [-]
Select DATE_FORMAT(Fecha,"%Y-%m"), Precio from Movimientos where fecha in (SELECT MAX(Fecha) FROM Movimientos GROUP BY DATE_FORMAT(Fecha,"%Y-%m"))



Muchas gracias basti, lo de la Subconsulta es la solución....a pesar que en un principio se demoró muchísimo y es porque en el WHERE no estaba utilizando bien los campos que son llave......

Muchas gracias a todos....


La franja horaria es GMT +2. Ahora son las 19:06:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi