add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE ItemsTable (
ID int,
Name varchar(50),
IsEnabled int,
ObjectName varchar(50),
PropertyName varchar(50),
PropertyValueString varchar(50),
PropertyValueInt int
)

INSERT INTO ItemsTable
VALUES
(1, 'Rule01', 1, 'MyObject', NULL, NULL, NULL),
(2, 'Rule02', 1, 'MyObject', NULL, NULL, NULL),
(3, 'Rule03', 1, 'MyObject', NULL, NULL, NULL),
(4, 'Rule04', 1, 'MyObject', NULL, NULL, NULL),
(5, 'Rule05', 1, 'MyObject', NULL, NULL, NULL),
(6, 'Prop01', 0, 'MyObject', 'Prop01', '$', NULL),
(7, 'Prop02', 0, 'MyObject', 'Prop02', NULL, 45)

7 rows affected
DECLARE @objectName varchar(50) = 'MyObject'

DECLARE @cols AS NVARCHAR(MAX)='';
DECLARE @query AS NVARCHAR(MAX)='';

SELECT
@cols = @cols + QUOTENAME(Name) + ','
FROM
(SELECT DISTINCT Name
FROM ItemsTable
WHERE LOWER(ObjectName) = LOWER(@objectName)
GROUP BY Name) AS tmp

SELECT @cols = SUBSTRING(@cols, 0, LEN(@cols))

SET @query =
'SELECT * FROM
(
SELECT
[Name]
,CAST(NULLIF([IsEnabled], 0) AS VARCHAR(50)) as [ValueColumn]
,[ObjectName]
FROM ItemsTable
UNION
SELECT
[Name]
,[PropertyValueString] as [ValueColumn]
,[ObjectName]
FROM ItemsTable
UNION
SELECT
[Name]
,CAST([PropertyValueInt] AS VARCHAR(50)) as [ValueColumn]
,[ObjectName]
FROM ItemsTable
) src
ObjectName Prop01 Prop02 Rule01 Rule02 Rule03 Rule04 Rule05
MyObject $ 45 1 1 1 1 1
SELECT * FROM 
(
    SELECT  
      [Name]      
      ,CAST(NULLIF([IsEnabled], 0) AS VARCHAR(50)) as [ValueColumn]  
      ,[ObjectName]           
      FROM ItemsTable 
    UNION
        SELECT  
      [Name]      
      ,[PropertyValueString]    as [ValueColumn]  
      ,[ObjectName]           
      FROM ItemsTable 
    UNION
        SELECT  
      [Name]      
      ,CAST([PropertyValueInt] AS VARCHAR(50))  as [ValueColumn]  
      ,[ObjectName]           
      FROM ItemsTable 
) src
pivot 
(
    max(ValueColumn) for Name in ([Prop01],[Prop02],[Rule01],[Rule02],[Rule03],[Rule04],[Rule05])
) piv

DECLARE @objectName varchar(50) = 'MyObject'

DECLARE @cols AS NVARCHAR(MAX)='';
DECLARE @query AS NVARCHAR(MAX)='';

SELECT
@cols = @cols + QUOTENAME(Name) + ','
FROM
(SELECT DISTINCT Name
FROM ItemsTable
WHERE LOWER(ObjectName) = LOWER(@objectName)
GROUP BY Name) AS tmp

SELECT @cols = SUBSTRING(@cols, 0, LEN(@cols))

SET @query =
'SELECT * FROM
(
SELECT
I.Name
,V.ValueColumn
,I.ObjectName
FROM ItemsTable I
CROSS APPLY (
SELECT COALESCE(
I.PropertyValueString,
CAST(I.PropertyValueInt AS VARCHAR(50)),
CAST(I.IsEnabled AS VARCHAR(50))
) AS ValueColumn
) V
) src
pivot
(
max(ValueColumn) for Name in (' + @cols + ')
) piv'

ObjectName Prop01 Prop02 Rule01 Rule02 Rule03 Rule04 Rule05
MyObject $ 45 1 1 1 1 1
SELECT * FROM 
(
    SELECT  
        I.Name
        ,V.ValueColumn
        ,I.ObjectName
    FROM ItemsTable I
    CROSS APPLY (
        SELECT COALESCE(
            I.PropertyValueString,
            CAST(I.PropertyValueInt AS VARCHAR(50)),
            CAST(I.IsEnabled AS VARCHAR(50))
            ) AS ValueColumn
    ) V
) src
pivot
(
    max(ValueColumn) for Name in ([Prop01],[Prop02],[Rule01],[Rule02],[Rule03],[Rule04],[Rule05])
) piv