查找包含数据的最新条目作为单独的字段

时间:2014-08-07 22:33:27

标签: sql date max

我已经从2个不同的数据库中加入了3个表,现在我希望找到每个MPN的最新成本。成本字段可以在每个MPN上多次存在。重要性是成本的“更新”日期。我要么继续得到只返回错误的结果,要么我写它只返回最新日期的条目而不是所有MPN的最新日期。有人可以帮忙吗?

这是我到目前为止所做的:

SELECT cost.mpn, cost.total_cost, Products.mpn, inventory.status
FROM DatabaseA.dbo.cost
INNER JOIN DatabaseB.dbo.Products
ON cost.mpn = products.mpn
INNER JOIN DatabaseA.dbo.inventory
ON inventory.mpn = cost.mpn

SELECT max(cost.updated) FROM cost

WHERE inventory.status <> 'DISCONTINUED'

谢谢。

1 个答案:

答案 0 :(得分:0)

大多数数据库都支持ANSI标准窗口函数。特别是,row_number()可用于获得您想要的内容:

select cpi.*
from (SELECT c.mpn, c.total_cost, p.mpn, inventory.status,
             row_number() over (partition by c.mpn order by c.updateddate desc) as seqnum
      FROM DatabaseA.dbo.cost c INNER JOIN
           DatabaseB.dbo.Products p
           ON c.mpn = p.mpn INNER JOIN
           DatabaseA.dbo.inventory i
           ON i.mpn = c.mpn
     ) cpi
where seqnum = 1;