2 つの列 (HardwarePhase と HardwarePhase_Result) に基づく二重の動的ピボットに取り組んでいます。
下の画像の最初の結果セットを使用すると、私が持っている生データになります。5 つの項目の各セット (画像で強調表示) は、HardwareTestCaseID に基づいてグループ化されます。
画像の 2 番目の結果セットは、このクエリの作成方法から取得した現在の結果です。 理想的には、2 番目の列の結果は同じ結果になりますが、代わりに結果をグループ化します。
グループ化は HardwareTestCaseID に基づいているはずですが、これは行われていません。
私が実際に望んでいる結果がここに示されています。(複数の行があるはずですが、これは 5 つのエントリごとにグループ化する方法です)。
これは私が現在使用しているクエリです:
注: @col 変数は、HardwarePhases (P0、M1、M2、M3) のリストに基づいて作成されます。
select @query = 'SELECT ' + @colsNames + ',' + @colsResultNames + ', HardwareTestCaseID FROM
(
SELECT HardwarePhase_Result, HardwarePhase, ResultValue, HardwareTestCaseID, HardwareStatus
FROM #temp4
) as x
pivot
(
MAX(ResultValue)
FOR HardwarePhase_Result IN (' + @colsResult + ')
) as p
pivot
(
MAX(HardwareStatus)
FOR HardwarePhase IN (' + @cols + ')
) as p2 ';
このテーブルを使用して:
create table #temp4
(
HardwarePhase nvarchar(max),
HardwarePhase_Result nvarchar(max),
ResultValue bigint,
HardwareTestCaseID bigint,
HardwareStatus nvarchar(max),
Block nvarchar(max)
);