將運行,這將是一個普通的SQL語句:
select P.PartNum, M.Formula, M.RevisionNum
from Parts P
join Material M on P.PartNum = M.PartNum
where M.RevisionNum = (select max(M2.RevisionNum) from Material M2
where M2.PartNum = P.PartNum);
的重複以上關於修訂#26後會發生什麼的警告。根據#26之後發生的情況,最大(修訂號)可能會中斷。
編輯:
如果RevisionNum序列總是開始瓦特/ NEW,然後繼續,A,B,C等,則MAX()需要更換瓦特/更復雜的東西(和凌亂):
select P.PartNum, M.RevisionNum
from Parts P
join Material M on P.PartNum = M.PartNum
where (
(select count(*) from Material M2
where M2.PartNum = P.PartNum) > 1
and M.RevisionNum = (select max(M3.RevisionNum) from Material M3
where M3.PartNum = P.PartNum and M3.RevisionNum <> 'NEW')
)
or (
(select count(*) from Material M4
where M4.PartNum = P.PartNum) = 1
and M.RevisionNum = 'NEW'
)
必須有更好的方法來做到這一點。這雖然有效 - 將不得不考慮更快的解決方案。
SQL小提琴:http://sqlfiddle.com/#!3/70c19/3
請註明你所使用的SQL Server版本。 – 2012-02-29 15:50:44
RevisionNum如何增加?它總是一個單一的字符?如果是這樣,第27次修訂會發生什麼? – SupremeDud 2012-02-29 15:53:02
檢查編輯。 – Jason 2012-02-29 16:43:56