USE [Database] SELECT [p].[name] AS [product_name], [a].[name] AS [attribute_name], ISNULL(TRY_CONVERT(NVARCHAR(128), TRY_PARSE([pv].[value] AS datetime), 103), [pv].[value]) FROM [Tables].[product_attributes] AS [pa] JOIN [Tables].[attributes] AS [a] ON [a].[id] = [pa].[attribute_id] JOIN [Tables].[products] AS [p] ON [p].[id] = [pa].[product_id] LEFT OUTER JOIN [Tables].[product_values] AS [pv] ON [pv].[product_id] = [pa].[product_id] AND [pv].[attribute_id] = [pa].[attribute_id] ORDER BY [p].[id];