代码之家  ›  专栏  ›  技术社区  ›  Andrew Goodman

获取最新日期,使用2个表

  •  -2
  • Andrew Goodman  · 技术社区  · 8 年前

    我试图获得一个项目的最新数据,数据是项目、排名vend\u num、vend\u item和成本,明显显示了最新日期的记录。数据跨越两个表,这就是我陷入困境的地方,我一直在下面的查询中,得到连接并输出数据。

    SELECT itemvend_all.item, itemvend_all.rank, itemvend_all.vend_num, 
           itemvend_all.vend_item, itemvendprice_mst.brk_cost##1, itemvendprice_mst.effect_date
    FROM itemvend_all
    INNER JOIN itemvendprice_mst
        ON  itemvend_all.item = itemvendprice_mst.item
        AND itemvend_all.vend_num = itemvendprice_mst.vend_num
    WHERE (itemvend_all.rank = '1')
    

    item    rank    vend_num    vend_item   brk_cost##1 effect_date
    0100G   1   KUVEUR  NULL    1   04/09/2013
    0100G   1   KUVEUR  NULL    2   01/11/2015
    0120SQ  1   KUVEUR  NULL    4   04/09/2013
    0120SQ  1   KUVEUR  NULL    5   01/11/2015
    0120SQ  1   KUVEUR  NULL    6   02/11/2015
    

    输出应该是,下面还有几百条其他记录。

    item    rank    vend_num    vend_item   brk_cost##1 effect_date
    
    0100G   1   KUVEUR  NULL    2   01/11/2015
    0120SQ  1   KUVEUR  NULL    6   02/11/2015
    

    1 回复  |  直到 8 年前
        1
  •  0
  •   Rams    8 年前

    您可以使用windows功能 row_number 获得所需输出

    SELECT        t1.* from (
    SELECT        ia.item, ia.rank, ia.vend_num, ia.vend_item, im.brk_cost##1, im.effect_date,row_number() over(partition by ia.item, ia.rank, ia.vend_num order by im.effect_date desc) rn
    FROM            itemvend_all ia INNER JOIN
                             itemvendprice_mst im ON ia.item = im.item AND ia.vend_num = im.vend_num
    WHERE        (ia.rank = '1')) as t1
    WHERE RN=1