Not as sophisticated as the prior posts, but here is what I use to get things into a table format for a given example of a FnL implementation. It has to be customized for each implementation obviously. Maybe it will help you.
SELECT
R.UserDefinedRowId as ID,
CONVERT(VARCHAR(10), max (cast((CASE WHEN F.FieldTitle = 'Start Date' THEN D.FieldValue ELSE '' END) as nvarchar(50))), 105) AS [Start Date],
max (cast((CASE WHEN F.FieldTitle = 'WMS' THEN D.FieldValue ELSE '' END) as nvarchar(50))) AS WMS,
max ('
'+ cast((CASE WHEN F.FieldTitle = 'Job Post Title' THEN D.FieldValue ELSE '' END) as nvarchar(50)) + '') as [Job Title],
MAX('$' + CAST((CASE WHEN F.FieldTitle = 'Hourly Rate (Up To)' THEN CONVERT(int, CONVERT(money, CONVERT(nvarchar(10), D .FieldValue))) ELSE '' END)
AS nvarchar(50))) AS [Rate],
max (cast((CASE WHEN F.FieldTitle = 'Need Duration (Months)' THEN D.FieldValue ELSE '' END) as nvarchar(50))) AS [Duration Months],
max (cast((CASE WHEN F.FieldTitle = 'Contact Company' THEN D.FieldValue ELSE '' END) as nvarchar(50))) AS [Contact Company]
FROM dbo.UserDefinedRows AS R LEFT OUTER JOIN
dbo.UserDefinedData AS D ON R.UserDefinedRowId = D.UserDefinedRowId INNER JOIN
dbo.UserDefinedFields AS F ON D.UserDefinedFieldId = F.UserDefinedFieldId
WHERE (F.ModuleId = 1111)
group by
R.UserDefinedRowId
order by [Start Date]
Chad