This is great solution when you need to use GREATEST between two expressions
With that said, try this on 100 expressions will be really poor performance and complex to write.
Another solution which might fit better in such cases is implement GREATEST idea using simple MAX function
For example except of using:
SELECT GREATEST ( '6.62', 3.1415, N'7' ) AS GreatestVal;
In SQL Server we can use:
SELECT MAX(GreatestVal) FROM (VALUES('6.62'), (3.1415), (N'7') )T(GreatestVal)
By the way, the power of developing a built-in function like GREATEST is that it can implement complex algorithm to find the greatest expressions or even multiple algorithms and selecting one which is best on the fly in theory.