** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Ayuda sobre sql
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoAyuda sobre sql

 Responder Responder
Autor
Mensaje
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Enlace directo a este mensaje 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.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje 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

Xavi, un minyó de Terrassa

Mi web
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Enlace directo a este mensaje 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.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable