Альтернативный способ сделать это, предполагая, что учетная запись уникальна за один период:
SELECT m1.PeriodID
, COALESCE(CASE WHEN at.AccountType = 'Y' then m1.Account end, m2.Account, m1.Account) as Account
, COALESCE(CASE WHEN at.AccountType = 'Y' then m1.Amount end, m2.Amount, 0.00) as Amount
FROM myTable m1
LEFT OUTER JOIN myTable m2
ON m2.PeriodID = m1.PeriodID
AND m2.ACCOUNT = STUFF(m1.Account, 1, 1, 'M')
CROSS JOIN (SELECT 'Y' as AccountType UNION ALL SELECT 'M') at
WHERE m1.Account LIKE 'Y%'
ORDER BY m1.PeriodID, m1.Account, at.AccountType DESC