• 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