Sample Data
IF OBJECT_ID('tempdb..#TempData')IS NOT NULL
DROP TABLE #TempData
DECLARE @t table (ID int,SKU int,Q varchar(100),A varchar(100))
Insert into @t
values
( 1 , 123 , 'Q1' , 'A1' )
, ( 2 , 123 , 'Q100' , 'A2' )
, ( 3 , 123 , 'Q200' , 'A3' )
, ( 1 , 456 , 'Q2' , 'A1' )
, ( 2 , 456 , 'Q200' , 'A4' )
, ( 3 , 456 , 'Q201' , 'A5' )
, ( 4 , 456 , 'Q203' , 'A6' )
, ( 1 , 789 , 'Q1' , 'A7' )
, ( 2 , 789 , 'Q2' , 'A2' )
, ( 3 , 789 , 'Q3' , 'A3' )
, ( 1 , 478 , 'Q10' , 'A47' )
, ( 2 , 478 , 'Q20' , 'A12' )
, ( 3 , 478 , 'Q34' , 'A03' )
, ( 4 , 478 , 'Q34' , 'A03' )
, ( 5 , 478 , 'Q34' , 'A03' )
, ( 6 , 478 , 'Q34' , 'A03' )
, ( 7 , 478 , 'Q34' , 'A03' )
, ( 8 , 478 , 'Q34' , 'A03' )
SELECT *,(Q+':'+A) AS Qdata, 'Q+A('+CAST(DENSE_RANK()OVER(ORDER BY ID) AS VARCHAR(10))+')'AS RID
INTO #TempData
FROM @t
Dynamic Sql using Pivot
DECLARE @Columns VARCHAR(MAX) ='',
@Columns2 VARCHAR(MAX) ='',
@Sql nvarchar (max)=''
SELECT @Columns=STUFF((SELECT DISTINCT ',',+ QUOTENAME(RID )
FROM #TempData FOR XML PATH ('')),1,1,'')
SELECT @Columns2=STUFF((SELECT DISTINCT ',',+ 'ISNULL(MAX('+QUOTENAME(RID ) +') ,''NA'') AS '+QUOTENAME(RID )
FROM #TempData FOR XML PATH ('')),1,1,'')
SET @Sql='SELECT SKU,'+@Columns2+' FROM
(
SELECT * FROM #TempData
) AS SRC
PIVOT
(
MAX(Qdata) FOR RID IN('+@Columns+')
) AS PVT
GROUP BY SKU'
PRINT @Sql
EXEC (@Sql)
Result
SKU Q+A(1) Q+A(2) Q+A(3) Q+A(4) Q+A(5) Q+A(6) Q+A(7) Q+A(8)
--------------------------------------------------------------------------------------------------
123 Q1:A1 Q100:A2 Q200:A3 NA NA NA NA NA
456 Q2:A1 Q200:A4 Q201:A5 Q203:A6 NA NA NA NA
478 Q10:A47 Q20:A12 Q34:A03 Q34:A03 Q34:A03 Q34:A03 Q34:A03 Q34:A03
789 Q1:A7 Q2:A2 Q3:A3 NA NA NA NA NA