On this small scale test, this solution performs better. I haven't had a chance to test on a larger scale.
SELECT *, pni.PONUMBER + REPLACE(CHAR(DENSE_RANK() OVER(PARTITION BY pni.PONUMBER ORDER BY PODATE) +
CASE
WHEN pn.PONumberSequence IS NULL THEN 63
WHEN pn.PONumberSequence BETWEEN '0' AND '9' THEN 64
ELSE ASCII(PONumberSequence)
END), '@', '')
FROM #PONUMBERTESTIMPORT pni
OUTER APPLY
(
SELECT RIGHT(MAX(PONUMBER), 1)
FROM #PONUMBERTEST pn
WHERE pn.PONUMBER LIKE pni.PONUMBER + '%'
) pn(PONumberSequence)
Drew
J. Drew Allen
Business Intelligence Analyst
Philadelphia, PA