あなたはこのフィドルをチェックすることができます
PIVOT で構成され、結果を最初のテーブルに結合します。
あなたの値はtest_001とtest_002だけではないと思うので、列を定義するために動的SQLが必要になります。
コード :
DECLARE @cols AS VARCHAR(MAX),
@query AS VARCHAR(MAX)
SET @cols = STUFF((SELECT distinct ',[' + AttribGroup + '_' + AttribID +']'
FROM Table1 c
FOR XML PATH(''), TYPE
).value('.', 'VARCHAR(MAX)')
,1,1,'')
SET @query =
';WITH MyCTE AS
(
SELECT *
FROM
(
SELECT AttribGroup + ''_'' + AttribID AS ColName,
CONVERT(VARCHAR,id)+''_''+CONVERT(VARCHAR,cat) AS idcat,
Value
FROM Table1
) p
PIVOT
(
MAX (Value)
FOR ColName IN (' + @cols + ')
) AS pvt
)
SELECT t.id,
t.cat,
m.*
FROM MyCTE m
JOIN
(
SELECT id,
cat,
CONVERT(VARCHAR,id)+''_''+CONVERT(VARCHAR,cat) as idcat
FROM Table1
GROUP BY id,
cat
) t
ON m.idcat = t.idcat'
EXEC(@query)