Try this.
select distinct TransactionNumber from
(
select TransactionNumber, CancelDueToCorrection, count(1) over( partition by TransactionNumber) as TransCount
, sum(case when CancelDueToCorrection = 'Y' then 1
else 0
end) over( partition by TransactionNumber) as CancelCount
from test
) A
where ( TransCount > 1 and CancelCount >=1 )
or ( TransCount = 1 and CancelCount = 0 )