Ayuda sobre sql |
Responder |
Autor | |
01loko
Colaborador Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
Tema: Ayuda sobre sql Enviado: 08/Abril/2020 a las 11:55 |
Tengo una tabla que archiva las variaciones de precios, con los campos (entre otros): Referencia, fecha, año, valor_ant, proveedor Me gustaria (si se puede) agruparlos de la siguiente manera: referencia-fecha_mas_alta,año, valor_ant, proveedor de tal manera que aun habiendo mas de 1 variacion a lo largo del año nos muestre: 12345b,01/12/19,2019,1500, pepito perez 12345b,20/10/18,2018,1420, pepito perez 12345b,20/08/17,2017,1450, pepito perez 12345b,02/12/16,2016,1150, pepito perez 12345b,21/07/17,2015,1050, pepito perez |
|
Recordar de que soy nuevo y estoy aprendiendo.
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14738 |
Enviado: 08/Abril/2020 a las 12:36 |
Voy a suponer que hay un error de transcripción y que el ultimo registro, en lugar de 21/07/17 es 21/07/15
También entiendo que existen más registros dentro del año. Imaginando una tabla llamada Variaciones, se trataría de una primera consulta sobre la tabla agrupando por referencia, año y proveedor tomando el Maximo de fecha. Llamamos a la consulta Agrupado A continuación otra consulta basada en la propia tabla y la consulta Agrupado relacionando los campos referencia, fecha, año y proveedor. En los campos mostramos todos los campos y el Valor de la tabla. Por separado: Consulta Agrupado (SELECT [Variaciones].Referencia, Max([Variaciones].Fecha) AS MáxDeFecha, [Variaciones].Año, [Variaciones].Proveedor FROM Variaciones GROUP BY [Variaciones].Referencia, [Variaciones].Año, [Variaciones].Proveedor Consulta resultado (apoyado en consulta Agrupado existente) SELECT Variaciones.Referencia, Variaciones.Fecha, Variaciones.Año, Variaciones.Valor_Ant, Variaciones.Proveedor FROM Variaciones INNER JOIN Agrupado ON (Variaciones.Proveedor = Agrupado.Proveedor) AND (Variaciones.Año = Agrupado.Año) AND (Variaciones.Fecha = Agrupado.MáxDeFecha) AND (Variaciones.Referencia = Agrupado.Referencia); Todo junto (no existe la consulta Agrupado): SELECT [Variaciones].Referencia, [Variaciones].Fecha, [Variaciones].Año, [Variaciones].Valor_Ant, [Variaciones].Proveedor FROM Variaciones INNER JOIN (SELECT [Variaciones].Referencia, Max([Variaciones].Fecha) AS MáxDeFecha, [Variaciones].Año, [Variaciones].Proveedor FROM Variaciones GROUP BY [Variaciones].Referencia, [Variaciones].Año, [Variaciones].Proveedor) AS Agrupado ON ([Variaciones].Referencia=Agrupado.Referencia) AND ([Variaciones].Fecha=Agrupado.MáxDeFecha) AND ([Variaciones].Proveedor=Agrupado.Proveedor) AND ([Variaciones].Año=Agrupado.Año); Como podrás ver, esta segunda SQL simplemente cambia ...INNER JOIN Agrupado ON ... por: ... INNER JOIN (la_SQL_completa) AS Agrupado ON Un saludo |
|
01loko
Colaborador Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
Enviado: 10/Abril/2020 a las 08:59 |
xavi, si has escrito eso de carrerilla, tienes que hacertelo mirar. Por Dios que funciona. Aunque tuve que ajustarlo, por el nombre de los campos, pero funciona y hace lo esperado Mil gracias Podemos cerrar el hilo
|
|
Recordar de que soy nuevo y estoy aprendiendo.
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |