IF object_id('tempdb.#testEnvironment') IS NOT NULL
BEGIN
DROP TABLE #testEnvironment;
END;
SELECT ID, NAME
INTO #testEnvironment
FROM (VALUES(1,'a'),(1,'b'),(1,'c'),(1,'d'),(2,'e'),(2,'f'),
(3,'g'),(3,'h'),(3,'i'),(4,'j'),(5,'K'),(5,'L'),
(5,'m'),(5,'N'),(5,'O'),(5,'P')
)a(ID, NAME);
DECLARE @SQL NVARCHAR(MAX);
SELECT @SQL='SELECT ID,'+CHAR(13)+CHAR(10)+
STUFF((SELECT ','+CHAR(13)+CHAR(10)+'NULLIF(MAX(CASE WHEN POS = '+CAST(POS AS VARCHAR(3))+' THEN NAME ELSE '+CHAR(39)+CHAR(39)+' END),'+CHAR(39)+CHAR(39)+
') AS '+QUOTENAME('NAME'+CAST(POS AS VARCHAR(3)))
FROM (SELECT DISTINCT ROW_NUMBER() OVER(PARTITION BY ID ORDER BY NAME)
FROM #testEnvironment
)a(POS)
FOR XML PATH('), TYPE).value('.','VARCHAR(MAX)'),1,3,')+CHAR(13)+CHAR(10)+'FROM (SELECT ID, NAME, ROW_NUMBER() OVER(PARTITION BY ID ORDER BY NAME)'+CHAR(13)+CHAR(10)+
SPACE(6)+'FROM #testEnvironment'+CHAR(13)+CHAR(10)+SPACE(6)+')a(ID,NAME,POS)'+CHAR(13)+CHAR(10)+'GROUP BY ID;';
EXECUTE sp_executesql @SQL;
ID NAME1 NAME2 NAME3 NAME4 NAME5 NAME6
----------- ----- ----- ----- ----- ----- -----
1 a b c d NULL NULL
2 e f NULL NULL NULL NULL
3 g h i NULL NULL NULL
4 j NULL NULL NULL NULL NULL
5 K L m N O P
CASE
expressions:USE [DBA_UTIL]
CREATE TABLE [dbo].[PARAMEXAMPLE](
[Entity] [varchar](16) NULL,
[ParamName] [varchar](256) NULL,
[ParamsValue] [varchar](256) NULL,
[ParamiValue] [varchar](256) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'abc', N'GraceDays', NULL, N'5')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'abc', N'LateType', NULL, N'1')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'abc', N'LatePerDay', NULL, N'10')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'abc', N'MaxDays', NULL, N'15')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'abc', N'LateMinAmount', NULL, N'15')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'jkl', N'GraceDays', NULL, N'3')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'jkl', N'LateType', NULL, N'2')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'jkl', N'LatePerDay', NULL, N'10')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'jkl', N'MaxDays', NULL, N'15')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'jkl', N'LateMinAmount', NULL, NULL)
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'xyz', N'GraceDays', NULL, N'5')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'xyz', N'LateType', NULL, N'1')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'xyz', N'LatePerDay', NULL, N'10')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'xyz', N'MaxDays', NULL, N'12')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'xyz', N'LateMinAmount', NULL, N'25')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'ops', N'GraceDays', NULL, N'3')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'ops', N'LateType', NULL, N'5')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'ops', N'LatePerDay', NULL, N'20')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'ops', N'LateMinAmount', NULL, N'0.0')
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'abc', N'LateDesc', N'Flat', NULL)
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'jkl', N'LateDesc', N'PercentRent', NULL)
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'ops', N'LateDesc', N'Flat', NULL)
GO
INSERT [dbo].[PARAMEXAMPLE] ([Entity], [ParamName], [ParamsValue], [ParamiValue]) VALUES (N'xyz', N'LateDesc', N'PercentBalance', NULL)
GO
test
to your table name in code):