As far as i know, we dont have any camel-casing utility function in T-SQL.
Here is my stab at it
DECLARE @Table TABLE
(
iD INT
,AttrVal1 VARCHAR(100)
,AttrVal2 VARCHAR(100)
)
INSERT INTO @Table
SELECT 1 , 'eXEC' ,'exec Proc myproc'
UNION ALL SELECT 2 , 'Sql' ,'Exec Proc Myproc2'
UNION ALL SELECT 3 , 'tsql' ,'CREATE FUNCTION A'
UNION ALL SELECT 4 , 'BCP' ,'bulk upload all files'
UNION ALL SELECT 5 , ' xp_cmdshell ' ,' dir /*'
; WITH CTE AS
(
SELECT T.iD
, T.AttrVal1
, T.AttrVal2
, UprCaseAttVal1 = STUFF(CrsApp1.AttVal1 ,1,1,UPPER(LEFT(CrsApp1.AttVal1,1)))
, UprCaseAttVal2 = STUFF(CrsApp2.Item ,1,1,UPPER(LEFT(CrsApp2.Item,1)))
, CrsApp2.ItemNumber
FROM @Table T
CROSS APPLY (SELECT RTRIM(LTRIM(T.AttrVal1)) , RTRIM(LTRIM(T.AttrVal2)) ) CrsApp1 (AttVal1,AttVal2)
CROSS APPLY dbo.DelimitedSplit8K (CrsApp1.AttVal2,' ') CrsApp2
)
SELECT C.iD
,AttrVal1 = C.UprCaseAttVal1
,AttrVal2 = STUFF ( ( SELECT ' '+C1.UprCaseAttVal2
FROM CTE C1
WHERE c1.iD = C.id
ORDER BY C1.ItemNumber
FOR XML PATH(''),TYPE
).value('.','VARCHAR(MAX)') , 1,1,SPACE(0))
FROM CTE C
GROUP BY C.iD , C.UprCaseAttVal1