CREATE FUNCTION dbo.OrderViewColumns (@NewLineDelimitedColumnList VARCHAR(MAX))
RETURNS VARCHAR(MAX)
BEGIN
RETURN(SELECT dbo.StringConcat(' ' + tr2, ',
')
FROM(
SELECT TOP 999999
TR2
FROM dbo.ParseDelimited(REPLACE(REPLACE(REPLACE(REPLACE(@NewLineDelimitedColumnList, ' ', ' '), ' ', ' '), ' ', ' '), ' ', ' '), '
') a
CROSS APPLY (SELECT RTRIM(LTRIM(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(a.Field)), '[', ' '), ']', ' '), ' ', ' '))) AS TrimmedNOBrackets,
RTRIM(LTRIM(REPLACE(RTRIM(LTRIM(a.Field)), ' ', ' '))) AS Trimmed) b
CROSS APPLY (SELECT CASE WHEN Trimmed LIKE ',%' THEN LTRIM(SUBSTRING(Trimmed, 2, 1000))
ELSE Trimmed
END AS TR,
CASE WHEN TrimmedNOBrackets LIKE ',%' THEN LTRIM(SUBSTRING(TrimmedNOBrackets, 2, 1000))
ELSE TrimmedNOBrackets
END AS TRNB) c
CROSS APPLY (SELECT CASE WHEN TR LIKE '%,' THEN RTRIM(LEFT(TR, LEN(TR) - 1))
ELSE TR
END AS TR2,
CASE WHEN TRNB LIKE '%,' THEN RTRIM(LEFT(TRNB, LEN(TRNB) - 1))
ELSE TRNB
END AS TRNB2) d
CROSS APPLY (SELECT PATINDEX ('%[ .]%', REVERSE (TRNB2)) AS rf) e
CROSS APPLY (SELECT CASE WHEN rf = 0 THEN TRNB2 ELSE RIGHT (TRNB2, rf- 1) END AS cn) f
ORDER BY cn)k)
END