SQL SELECT在另一个具有最新日期的表中

时间:2015-09-29 18:25:20

标签: tsql join sql-server-2008-r2

我需要查询表1 中的物质数据列表,并在表2 中获取最新发票编号这与原来的物质有关。我很难将这些表连接在一起,每个Matter只得到一个结果,因为我只想要最新的Invoice#。

非常感谢任何和所有帮助。

表1

enter image description here

表2

enter image description here

RESULT

enter image description here

1 个答案:

答案 0 :(得分:0)

以下按日期顺序为每个发票行分配编号,并仅选择最近的编号。请注意,这假设InvoiceDate存储为datedatetime或其他按时间顺序排序的内容,并且如果同一日期有两张发票,则返回任意一个精细。如果您在发生关联时需要退回两张发票,请将row_number替换为rank

Select * from Table1 a
inner join 
    (Select *
    , row_number() over (partition by MatterID order by InvoiceDate desc) as RN
     from Table2) b
on a.MatterID = b.MatterID and b.RN = 1