加入两个表,只使用右表的最新值

Jas*_*son 2 sql sql-server join sql-server-2008

我正在尝试加入2个表,但只加入一组记录中的最新记录.

左表:

部分

  • Part.PartNum

右表:

材料

  • Material.Partnum
  • Material.Formula
  • Material.RevisionNum

修订号从"A"开始并增加.

我想通过PartNum加入2个表,但只能加入右表中的最新记录.我已经看过其他关于SO的例子,但很难将它们放在一起.

编辑:

我发现第一个修订号是"新",然后它增加A,B,......它永远不会超过一个或两个修订,所以我不担心重复序列.但是,我如何选择最新的"新"作为第一个修订号?

Aar*_*and 5

如果是SQL Server 2005+

;WITH m AS 
(
   SELECT Partnum, Formula, RevisionNum,
     rn = ROW_NUMBER() OVER (PARTITION BY PartNum ORDER BY 
       CASE WHEN RevisionNum ='New' THEN 1 ELSE 2 END)
     FROM dbo.Material
)
SELECT p.PartNum, m.Formula, m.RevisionNum
FROM dbo.Parts AS p
INNER JOIN m ON p.PartNum = m.PartNum
WHERE m.rn = 1;
Run Code Online (Sandbox Code Playgroud)

虽然很好奇,但如果有超过26个版本(比如之后的内容Z),你会怎么做?