Declare @Actual Table
(
ItemState varchar(10)
, Car varchar(10)
, Truck int
, Boats int
, Planes int
)
insert into @Actual
select 'old', 'volvo', 89, 65, 67 union all
select 'new', 'pinto', 102, 55, 12 union all
select 'used', 'mercedes', 3, 22, 14 union all
select 'stolen', 'winnebago', 4, 11, 156
;
select * From @Actual
;
WITH CTE (ItemState, SortKey, colname, Value)
AS
(
select ItemState, 1, 'cars', cast(car as varchar(500))
from @Actual
UNION ALL
select ItemState, 2, 'Truck', cast(Truck as varchar(500))
from @Actual
UNION ALL
select ItemState, 3, 'Boats', cast(Boats as varchar(500))
from @Actual
UNION ALL
select ItemState, 4, 'Planes', cast(Planes as varchar(500))
from @Actual
)
select t2.colname, [old], [new], [used],[stolen]
from
(
select c.SortKey, c.ItemState, c.colname, c.Value
from cte c
) t1
Pivot
(
max(value) for t1.ItemState IN ([old], [new], [used],[stolen])
) as t2
order by t2.SortKey