locked
campo asociado a otro campo... RRS feed

  • Pregunta

  • yo de nuevo...

    Hola a todos...

    Bueno tengo una consulta la cual debe escoger la fecha Maxima de un tabla y los campos asociados a esta fecha Maxima pero esta me repite los registros. ya que, la sentencia MAX los agrupa y otro campo(precio) no son iguales en los diferentes registros. mi intencion es que me entregue un solo registro todos los que correspondan al registro que contenga la linea de la fecha maxima, espero haberme explicado bien...les dejo la consulta que hago...

    select MAX(fecha_proc) AS fecha_ult_venta, precio
    from hist_venta where (YEAR(fecha_proc) <= 2004)
    group by precio
    order by precio

    desde ya gracias....

    jueves, 29 de octubre de 2009 20:02

Respuestas

  • Hola.

    La aproximación inicial sería obtener qué registro es el de la mayor fecha y una vez que tenemos éste obtener el resto de datos, en este caso el precio. La primera de las consultas:

    select max(fecha_proc) from hist_venta where yeart(fecha_proc) <= 2004

    Aunque eso no parece que tenga mucho sentido. Sería más lógico pensar que existe un campo, por ejemplo el cod_producto (de un hilo tuyo anterior) del que hubiera que obtener la última fecha de cada producto. Y el resultado de esta consulta sería:

    select max(fecha_proc) as max_fecha, cod_producto from hist_venta where yeart(fecha_proc) <= 2004 group by cod_producto

    Este resultado lo cruzas con la misma tabla, con un inner join, para obtener el precio de cada producto en la última fecha:

    select g.cod_producto, g.max_fecha, h.precio
    from hist_venta h inner join 
      (select max(fecha_proc) as max_fecha, cod_producto from hist_venta where yeart(fecha_proc) <= 2004 group by cod_producto) g
          on h.fecha_proc = g.max_fecha and h.cod_producto = g.cod_producto
    order by precio

    Si no es lo que buscas, nos dices.


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    jueves, 29 de octubre de 2009 20:14
    Moderador

Todas las respuestas

  • Hola.

    La aproximación inicial sería obtener qué registro es el de la mayor fecha y una vez que tenemos éste obtener el resto de datos, en este caso el precio. La primera de las consultas:

    select max(fecha_proc) from hist_venta where yeart(fecha_proc) <= 2004

    Aunque eso no parece que tenga mucho sentido. Sería más lógico pensar que existe un campo, por ejemplo el cod_producto (de un hilo tuyo anterior) del que hubiera que obtener la última fecha de cada producto. Y el resultado de esta consulta sería:

    select max(fecha_proc) as max_fecha, cod_producto from hist_venta where yeart(fecha_proc) <= 2004 group by cod_producto

    Este resultado lo cruzas con la misma tabla, con un inner join, para obtener el precio de cada producto en la última fecha:

    select g.cod_producto, g.max_fecha, h.precio
    from hist_venta h inner join 
      (select max(fecha_proc) as max_fecha, cod_producto from hist_venta where yeart(fecha_proc) <= 2004 group by cod_producto) g
          on h.fecha_proc = g.max_fecha and h.cod_producto = g.cod_producto
    order by precio

    Si no es lo que buscas, nos dices.


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    jueves, 29 de octubre de 2009 20:14
    Moderador
  • Grande Master !!!!

    hoy me has enseñado un montón de T-Sql

    te agradezco... :)

    Saludos

    Netzio
    jueves, 29 de octubre de 2009 20:42