This is using a recent post on PIVOT SQL technique.
--Creating a table with your type of data
create table TT
(
SUPKEY varchar(100),
value tinyint
)
insert into TT values ('BF5EC5CA-C0D8-4402-AA1E-3ACEB6F45A28', 70)
insert into TT values ('BF5EC5CA-C0D8-4402-AA1E-3ACEB6F45A28', 80)
insert into TT values ('BF5EC5CA-C0D8-4402-AA1E-3ACEB6F45A28', 90)
insert into TT values ('AF5EC5CA-C0D8-4402-AA1E-3ACEB6F45A28', 70)
insert into TT values ('AF5EC5CA-C0D8-4402-AA1E-3ACEB6F45A28', 80)
insert into TT values ('AF5EC5CA-C0D8-4402-AA1E-3ACEB6F45A28', 90)
insert into TT values ('XF5EC5CA-C0D8-4402-AA1E-3ACEB6F45A28', 70)
--select * from tt
--Create another temp table with UR data and a KEY col
drop table #temp
SELECT SUPKEY, VALUE, CAST(0 AS INT) AS KEYVAL
INTO #temp
FROM tt
--Index - so we can put correct values for KEY coL
CREATE CLUSTERED INDEX Composite ON #temp (SUPKEY, VALUE)
DECLARE @PrevSUPKEY varchar(100)
SET @PrevSUPKEY = 0
DECLARE @keycnt INT
--Create running count in the KEY Column
UPDATE #temp
SET @keycnt = KEYVAL = CASE WHEN SUPKEY = @PrevSUPKEY THEN @keycnt+1 ELSE 1 END,
@PrevSUPKEY = SUPKEY
FROM #temp WITH (INDEX(Composite),TABLOCKX)
--Now create a dynamix SQL to produce the reqd output
DECLARE @SQL0 VARCHAR(8000)
DECLARE @SQL1 VARCHAR(8000)
DECLARE @SQL2 VARCHAR(8000)
SELECT @SQL0 = 'SELECT SUPKEY,'
SELECT @SQL1 = ISNULL(@SQL1+',','')+CHAR(10)
+ 'MAX(CASE WHEN KEYVAL = ' + CAST(d.KEYVAL AS VARCHAR(10)) + ' '
+ 'THEN VALUE ELSE '''' END) AS VALUE' + CAST(d.KEYVAL AS VARCHAR(10))
FROM (SELECT DISTINCT KEYVAL FROM #temp) d
ORDER BY d.KEYVAL
SELECT @SQL2 = CHAR(10)+'FROM #temp GROUP BY SUPKEY'
--Execute the dynamic SQL
--PRINT @SQL0+@SQL1+@SQL2
exec (@SQL0+@SQL1+@SQL2)