Hi Lynton and welcome to the developing community - it's a wonderous place!
The first problem is pretty interesting and I spent a little bit of time trying to figure the exact statement out and I got close but not 100%. The only problem is a type casting issue. You should be able to cast the number to a string, and then you'll need to add logic to add the zero-padding if necessary. The statement I made is pasted below. You should put this statement in the formula section of the 'Computer Column' property for the column in SQL Server Management Studio.
The second problem is a repeat of your other post to which I have already reply.
upper(substring(T.FirstName, 1, 1))
+ upper(substring(T.SurName,1,1))
+ ((select count(*) from Names where upper(substring(FirstName,1,1)) = upper(substring(T.FirstName,1,1)) and upper(substring(SurName,1,1)) = upper(substring(T.SurName,1,1)))+1)
Matt Faus / Microsoft InfoPath MVPQdabra® Software / Streamline data gathering to turn process into knowledge