uma forma de utilizar o pivot seria esta:
;WITH TABELA
AS (SELECT PR.DATA,
F.CODIGO_FUNCI,
F.NOME,
OP.DESCRICAO,
PR.QTD,
Datepart(HH, PR.HORA) AS HORA
FROM TABELA_PR PR
INNER JOIN TABELA_OP OP
ON PR.CODIGO_OP = OP.CODIGO_OP
INNER JOIN FUNCIONARIOS F
ON PR.CODIGO_FUNCI = F.CODIGO_FUNCI
GROUP BY PR.DATA,
F.CODIGO_FUNCI,
F.NOME,
OP.DESCRICAO,
PR.QTD,
Datepart(HH, PR.HORA))
SELECT DATA,
CODIGO_FUNCI,
NOME,
DESCRICAO,
Isnull([7], 0) AS [7h],
Isnull([8], 0) AS [8h],
Isnull([9], 0) AS [9h],
Isnull([10], 0) AS [10h],
Isnull([11], 0) AS [11h],
Isnull([12], 0) AS [12h]
FROM TABELA
PIVOT(Sum(QTD)
FOR hora IN([7],
[8],
[9],
[10],
[11],
[12])) AS pvt
ORDER BY 1,
2