• It's actually much simple than you are thinking....

    here is the simplified version of it...

    SELECTEarn.RowID AS EarnRowID, Earn.SalaryHeadName AS EarnSalaryHeadName, Earn.HeadType AS EarnHeadType,

    Earn.SalaryAmount AS EarnSalaryAmount, Dedn.RowID AS DednRowID,

    Dedn.SalaryHeadName AS DednSalaryHeadName, Dedn.HeadType AS DednHeadType,

    Dedn.SalaryAmount AS DednSalaryAmount

    FROM(

    SELECTROW_NUMBER() OVER( PARTITION BY SummarySalaryID ORDER BY SummarySalaryID, Sequence, SalaryHeadID ) AS RowID,

    SummarySalaryID, SalaryHeadID, SalaryHeadCode, SalaryHeadName, SalaryHeadAlias,

    HeadType, Sequence, SalaryRate, SalaryAmount

    FROM#tmpMonthlySalaries

    WHEREPaymentType= 'Earning'

    AND ArrearPayment = 0

    AND HeadType != @strOtherPayments

    ) Earn

    FULL OUTER JOIN

    (

    SELECTROW_NUMBER() OVER( PARTITION BY SummarySalaryID ORDER BY SummarySalaryID, Sequence, SalaryHeadID ) AS RowID,

    SummarySalaryID, SalaryHeadID, SalaryHeadCode, SalaryHeadName, SalaryHeadAlias,

    HeadType, Sequence, SalaryRate, SalaryAmount

    FROM#tmpMonthlySalaries

    WHEREPaymentType= 'Deduction'

    AND ArrearPayment = 0

    AND HeadType != @strOtherPayments

    ) Dedn ON Earn.SummarySalaryID = Dedn.SummarySalaryID AND Earn.RowID = Dedn.RowID

    Though I am happy with what I've got, but still I am very much open to your suggestions...

    --Ramesh