Sort Totals By Months
Change

select @cols = STUFF((SELECT distinct ',' +
                    QUOTENAME(DATENAME(MONTH, CONVERT(DATETIME, createDate)))
                  FROM OSCL
                  WHERE     ([status] = - 3) 

                  FOR XML PATH(''), TYPE
                 ).value('.', 'NVARCHAR(MAX)') 
                    , 1, 1, '');


to

select @cols = STUFF((SELECT ',' +
                    QUOTENAME(DATENAME(MONTH, CONVERT(DATETIME, createDate)))
                  FROM OSCL
                  WHERE     ([status] = - 3)
                  GROUP BY QUOTENAME(DATENAME(MONTH, CONVERT(DATETIME, createDate))), DATEPART(MONTH, CONVERT(DATETIME, createDate))
                  ORDER BY DATEPART(MONTH, CONVERT(DATETIME, createDate))

                  FOR XML PATH(''), TYPE
                 ).value('.', 'NVARCHAR(MAX)') 
                    , 1, 1, '');