я хочу отображать только 1 запись с последней датой и отображать другие столбцы
lastname firstname datestarted position salary
lian nez 2014-07-05 Cad Operator 4000
lian nez 2015-06-02 Foreman 10000
lian nez 2013-04-05 Manpower controller 13000
я хочу, чтобы отображалось только это, потому что это последняя запись
lastname firstname datestarted position salary
lian nez 2015-06-02 Foreman 10000
Запрос
SELECT s.lastname,s.firstname,LatestDate,s1.position,s1.salary
FROM constructiondb.dbo.employeetb s
JOIN
(
SELECT IDNo,position,salary,projectid, MAX(datestarted) AS LatestDate
FROM constructiondb.dbo.eassignmenttb
GROUP BY IDNo,position,salary,projectid
) s1 ON s.IDNo = s1.IDNo
INNER JOIN constructiondb.dbo.ProjectTB s2 on s2.ProjectNo=s1.projectid
where lastname='lian'and firstname='nez'


Вы можете использовать RANK():
SELECT TOP (1) WITH TIES s.lastname, s.firstname, s1.datestarted, s1.position, s1.salary
FROM constructiondb.dbo.employeetb s INNER JOIN
constructiondb.dbo.eassignmenttb s1
ON s1.IDNo = s.IDNo AND s1.projectid = s.projectid
ORDER BY RANK() OVER (PARTITION BY s.IDNo, s.projectid ORDER BY s1.datestarted DESC);
Это поможет вам:
SELECT TOP 1 s.lastname, s.firstname, s1.datestarted, s1.position, s1.salary
FROM constructiondb.dbo.employeetb s
INNER JOIN constructiondb.dbo.eassignmenttb s1 ON s1.IDNo = s.IDNo AND s1.projectid = s.projectid
ORDER BY s1.datestarted DESC;
Возможный дубликат Выбор записи с максимальным значением