Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-03-2007
pelaorb68 pelaorb68 is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
pelaorb68 Va por buen camino
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...
Responder Con Cita
  #2  
Antiguo 15-03-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
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
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #3  
Antiguo 16-03-2007
pelaorb68 pelaorb68 is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
pelaorb68 Va por buen camino
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,
Responder Con Cita
  #4  
Antiguo 16-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
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"))
Responder Con Cita
  #5  
Antiguo 16-03-2007
pelaorb68 pelaorb68 is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
pelaorb68 Va por buen camino
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....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda con mysql y delphi tato Varios 7 02-02-2006 19:50:26
ayuda mysql server tato Varios 2 14-12-2005 18:50:45
Ayuda Por Favor con MySQL gilberto_1126 SQL 1 09-11-2005 01:31:50
Mysql y Zeos 6.5.1 ayuda dcidt MySQL 3 04-10-2005 19:01:08
Como conecto con MySQL?? Ayuda...!! Icaro Conexión con bases de datos 2 18-02-2004 17:26:23


La franja horaria es GMT +2. Ahora son las 22:22:11.


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
Copyright 1996-2007 Club Delphi