This may help, although it will also show NULL rows for Role002 and Role003 of Job001.SELECT A.JobID, A.RoleNo, B2.PackageID, B2.DurationFROM TableC C JOIN TableB B1 ON C.CountryCodePackageID = B1.CountryCodePackageID JOIN TableB B2 ON B1.PackageID = B2.PackageID AND B2.CountryCode = 'UK' RIGHT JOIN TableA A ON C.RoleNo = A.RoleNo
If you want to use a left join then the inner joins will need to be nested.SELECT A.JobID, A.RoleNo, B2.PackageID, B2.DurationFROM TableA A LEFT JOIN ( TableC C JOIN TableB B1 ON C.CountryCodePackageID = B1.CountryCodePackageID JOIN TableB B2 ON B1.PackageID = B2.PackageID AND B2.CountryCode = 'UK' ) ON A.RoleNo = C.RoleNo
To get the results exactly as you have shown try:SELECT A2.JobID, A2.RoleNo, B2.PackageID, B2.DurationFROM TableC C JOIN TableB B1 ON C.CountryCodePackageID = B1.CountryCodePackageID JOIN TableB B2 ON B1.PackageID = B2.PackageID AND B2.CountryCode = 'UK' JOIN TableA A1 ON C.RoleNo = A1.RoleNo RIGHT JOIN TableA A2 ON A1.JobID = A2.JobIDWHERE A2.RoleNo = C.RoleNo OR C.RoleNo IS NULL