Несмотря на ситуацию с предложением WHERE
, ваш текущий запрос может также привести к нежелательным результатам, если записи, которые появляются в одной таблице, не совпадают по году записи в другой таблице. Следовательно, строки с NULL
могут быть возвращены, когда предположительно должны быть значения. По этой причине рассмотрите возможность объединения только на UserName
, а затем на DISTINCT
и COALESCE
, чтобы уменьшить и объединить годы.
SELECT DISTINCT
RL.UserName
,RL.Company
,COALESCE(BIO.ProgramYear, PHA.ProgramYear) AS ProgramYear
,BIO.ScreeningDate
,PHA.PHADate
FROM Registration RL
LEFT OUTER JOIN PHADetails PHA
on RL.UserName = PHA.Username
FULL OUTER JOIN Biometrics BIO
on RL.UserName = BIO.Username
...
Чтобы использовать данные Excel, см. Онлайн-демонстрация ,
SELECT DISTINCT
RL.UserName
,RL.Firstname
,RL.Lastname
,COALESCE(BIO.Year, PHA.Year) As Year
,BIO.One
,PHA.Four
FROM UserTable RL
LEFT OUTER JOIN AddInfoTable PHA
ON RL.UserName = PHA.Username
FULL OUTER JOIN BaseInfoTable BIO
ON RL.UserName = BIO.Username
ORDER BY
COALESCE(BIO.Year, PHA.Year) DESC;