从此查询开始
SELECT DISTINCT Name,Manufacturer,Model,RevisionID FROM dbo.COMPUTER_TABLE ORDER BY Name,RevisionID
我进入下表:
(Name,Manufacturer,Model,RevisionID)
UST8923 | Microsoft | Surface 2 | 1
UST8923 | Microsoft | Surface 2 | 2
UST8923 | Microsoft | Surface 3 | 3
UST8923 | Microsoft | Surface 3 | 4
CAD4258 | Lenovo | Thinkpad P1 | 1
CAD4258 | Lenovo | Thinkpad P1 | 2
CAD4258 | Dell | Latitude 5480 | 3
我只需要获取具有最高RevisionID的记录,而丢弃其余的记录。 因此,我需要得到以下结果:
UST8923 | Microsoft | Surface 3 | 4
CAD4258 | Dell | Latitude 5480 | 3
有什么想法吗?
答案 0 :(得分:1)
相关子查询是一种简单而有效的解决方案:
select ct.*
from dbo.COMPUTER_TABLE ct
where ct.revisionid = (select max(ct2.revisionid)
from COMPUTER_TABLE ct2
where ct2.name = ct.name
);
答案 1 :(得分:1)
您需要GROUP BY Name, Manufacturer
SELECT
Name,
Manufacturer,
MAX(Model) AS MaxModel,
MAX(RevisionID) AS MaxRevisionID
FROM dbo.COMPUTER_TABLE
GROUP BY Name, Manufacturer
ORDER BY Name, MAX(Model), MAX(RevisionID)