I was wondering if there is a better way to do the nested selects so that the firstname and surname is only doing one select (but still returning 2 fields) - something like a join with a where clause in it that only returns the first matching object.
SELECT
w.[RECID],
w.[PERSONNELNUMBER],
(
SELECT TOP 1
[FIRSTNAME]
FROM [dbo].[DIRPERSONNAME] AS d
WHERE d.PERSON = w.PERSON
) AS FirstName,
(
SELECT TOP 1
LASTNAME
FROM [dbo].[DIRPERSONNAME] AS d
WHERE d.PERSON = w.PERSON
) AS Surname,
u.[USER_] AS UserName,
l.[LOCATOR] AS Email,
(
SELECT TOP 1
ed.MARHRSTRUCTUREID AS Structure
FROM [dbo].[HCMEMPLOYMENT] AS e
INNER JOIN [dbo].[MARHCMEMPDETAILS] AS ed ON e.RECID = ed.EMPLOYMENT
WHERE e.Worker = w.RECID
) AS Structure
FROM
[dbo].[DIRPARTYTABLE] AS p
INNER JOIN [dbo].[HCMWORKER] AS w ON w.PERSON = p.RECID
LEFT JOIN [dbo].[DIRPERSONUSER] AS u ON w.PERSON = u.PERSONPARTY
LEFT JOIN [dbo].[LOGISTICSELECTRONICADDRESS] AS l ON l.RECID = p.PRIMARYCONTACTEMAIL
Structurecolumn? \$\endgroup\$FIRSTNAMEorSURNAMEreturn null on occasion as well? \$\endgroup\$