Left outer join brings duplicate records

Hi There,
I have a query below
SELECT
*
From
(select * from CricketStaging_pass_SP_ID where EmaiNameDuplicated = 'T' and EmaiNameDuplicatedParent = 1 and ISNULL(EmailNameIncomplete,'') = '') as DataLeft
left outer join (select * from CricketStaging_pass_SP_ID where EmaiNameDuplicated = 'T' and EmaiNameDuplicatedParent = 0 and ISNULL(EmailNameIncomplete,'') = '') as DataRight
on DataLeft.Email = DataRight.Email
and DataLeft.FirstName = DataRight.FirstName
and DataLeft.LastName = DataRight.LastName

When you query first Dataleft part "select * from CricketStaging_pass_SP_ID where EmaiNameDuplicated = 'T' and EmaiNameDuplicatedParent = 1 and ISNULL(EmailNameIncomplete,'') = ''" you get below results

ID=63600
Email:parth.patel@microchannel.com.au

When you query first Dataleft part "select * from CricketStaging_pass_SP_ID where EmaiNameDuplicated = 'T' and EmaiNameDuplicatedParent = 0 and ISNULL(EmailNameIncomplete,'') = ''" you get below results

First Row:
ID=2249051
Email:parth.patel@microchannel.com.au

Second Row:
ID=2998983
Email:parth.patel@microchannel.com.au

When the first query is fired i.e. below:
SELECT
*
From
(select * from CricketStaging_pass_SP_ID where EmaiNameDuplicated = 'T' and EmaiNameDuplicatedParent = 1 and ISNULL(EmailNameIncomplete,'') = '') as DataLeft
left outer join (select * from CricketStaging_pass_SP_ID where EmaiNameDuplicated = 'T' and EmaiNameDuplicatedParent = 0 and ISNULL(EmailNameIncomplete,'') = '') as DataRight
on DataLeft.Email = DataRight.Email
and DataLeft.FirstName = DataRight.FirstName
and DataLeft.LastName = DataRight.LastName

I get duplicate data.

First Row:
ID=63600
Email:parth.patel@microchannel.com.au

Second Row:
ID=63600
Email:parth.patel@microchannel.com.au

The columns in the table are text - can you please advise how should this be fixed?

There are a number of ways.
It's clearer to use ctes here

;with DataLeft as
(
select *
from CricketStaging_pass_SP_ID
where EmaiNameDuplicated = 'T'
and EmaiNameDuplicatedParent = 1
and ISNULL(EmailNameIncomplete,'') = ''
)
, DataRight as
(
select *
, seq = row_number() over (partition by Email order by ID)
from CricketStaging_pass_SP_ID
where EmaiNameDuplicated = 'T'
and EmaiNameDuplicatedParent = 0
and ISNULL(EmailNameIncomplete,'') = ''
)
select *
from DataLeft
left join DataRight
DataLeft.Email = DataRight.Email
and DataLeft.FirstName = DataRight.FirstName
and DataLeft.LastName = DataRight.LastName
and DataRight.seq = 1