我已经从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'
谢谢。
答案 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;