В MS SQL вы можете сделать что-то вроде этого:
SELECT
tblProjects.*,
tblNotes.NoteID,
tblNotes.regDate AS lastUpdatedNote
FROM tblProjects
OUTER APPLY
(
SELECT TOP 1 NoteId, regDate
FROM tblNotes
WHERE tblProjects.ProjectID = tblNotes.ProjectID
ORDER BY tblNotes.regDate DESC
) tblNotes
Замените на CROSS APPLY
, если вам нужны только те проекты, у которых есть заметки.
или с CTE:
WITH cte
AS
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY NoteId ORDER BY RegDate DESC) RowNumber
FROM tblNotes
)
SELECT tblProjects.*, cte.NoteID, cte.RegDate
FROM tblProjects
LEFT JOIN cte on
tblProjects .ProjectId = cte.ProjectId AND RowNumber = 1
Замените на INNER JOIN
, если вам нужны только те проекты, у которых есть заметки.