I know we cannot use declare in a view, however I have no choice now...
is there a way I can use the below in a view, and how can this be done?
    Declare @q varchar(MAX)
;WITH N AS (
  SELECT DISTINCT FD_2A7417DC Pvt_Col 
  FROM   FD_Documents
), C (Cols) As (
  SELECT STUFF((SELECT ',' + QUOTENAME(Pvt_Col) 
                FROM   N
                ORDER BY Pvt_Col
                FOR XML PATH(''), TYPE
               ).value('.', 'NVARCHAR(MAX)') 
              , 1, 1, '')
)
SELECT @q 
       = 'SELECT ID_Number, Company, Date_Of_Birth, Department, Name
               , Surname, Passport_No, Job_Title, Start_Date
               , End_Date, Type
               , ' + Cols + ' 
          FROM  (SELECT FD_0D39C6B0 AS Company, FD_DDD24E25 AS Date_Of_Birth, FD_74290EA9 AS Department, FD_2A7417DC AS Document_Type, FD_E3421C61 AS Name
                      , FD_2B9CFA8C AS Surname, FD_96990BE2 AS ID_Number, FD_E6621D8A as Passport_No, FD_3744C28A AS Job_Title, FD_903EBB60 as Start_Date
                      , FD_9BBAD0CA AS End_Date, FD_AE108F93 as Type
                 FROM FD_Documents
                ) x
                PIVOT 
                (COUNT(Document_Type) FOR Document_Type in (' + Cols + ')) pvt'
FROM C
execute(@q)
Update 15/08/2014
This is were I'm at now.
create function dbo.tvf_getDocumentType()
returns @t table(ColName int FD_0D39C6B0 AS Company, FD_DDD24E25 AS Date_Of_Birth, FD_74290EA9 AS Department, FD_2A7417DC AS Document_Type, FD_E3421C61 AS Name
                      , FD_2B9CFA8C AS Surname, FD_96990BE2 AS ID_Number, FD_E6621D8A as Passport_No, FD_3744C28A AS Job_Title, FD_903EBB60 as Start_Date
                      , FD_9BBAD0CA AS End_Date, FD_AE108F93 as Type)
as
begin
   Declare @q varchar(MAX)
;WITH N AS (
  SELECT DISTINCT FD_2A7417DC Pvt_Col 
  FROM   FD_Documents
), C (Cols) As (
  SELECT STUFF((SELECT ',' + QUOTENAME(Pvt_Col) 
                FROM   N
                ORDER BY Pvt_Col
                FOR XML PATH(''), TYPE
               ).value('.', 'NVARCHAR(MAX)') 
              , 1, 1, '')
)
SELECT @q 
       = 'SELECT ID_Number, Company, Date_Of_Birth, Department, Name
               , Surname, Passport_No, Job_Title, Start_Date
               , End_Date, Type
               , ' + Cols + ' 
          FROM  (SELECT FD_0D39C6B0 AS Company, FD_DDD24E25 AS Date_Of_Birth, FD_74290EA9 AS Department, FD_2A7417DC AS Document_Type, FD_E3421C61 AS Name
                      , FD_2B9CFA8C AS Surname, FD_96990BE2 AS ID_Number, FD_E6621D8A as Passport_No, FD_3744C28A AS Job_Title, FD_903EBB60 as Start_Date
                      , FD_9BBAD0CA AS End_Date, FD_AE108F93 as Type
                 FROM FD_Documents
                ) x
                PIVOT 
                (COUNT(Document_Type) FOR Document_Type in (' + Cols + ')) pvt'
FROM C
execute(@q)
end
Error Message. Msg 102, Level 15, State 1, Procedure tvf_getDocumentType, Line 2 Incorrect syntax near 'FD_0D39C6B0'.
Im now going into uncharted water with this code for me.
 
     
    