• Please 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 ( CancelCount >=1 and TransCount > 1 )

    or ( CancelCount < 1 )