Vale. No sé que ha cambiado en la BB.DD. o en el query pero finalmente he conseguido lo que buscaba y creo que el único cambio que he hecho juraría que ya lo había probado. El query ha quedado así:
Código SQL
[-]WITH Pivote AS (SELECT Estadistica, Grupo1, Grupo2, Grupo3, Dato1
FROM Estadistica
WHERE SUBSTRING(Estadistica FROM 1 FOR 1) = :Estadistica)
SELECT DISTINCT A.Grupo1, A.Grupo2, D.Dato1, E.Dato1
FROM Estadistica A
LEFT JOIN Pivote D ON A.Estadistica = D.Estadistica AND A.Grupo1 = D.Grupo1 AND A.Grupo2 = D.Grupo2 AND D.Grupo3 = 3
LEFT JOIN Pivote E ON A.Estadistica = E.Estadistica AND A.Grupo1 = E.Grupo1 AND A.Grupo2 = E.Grupo2 AND E.Grupo3 = 4
WHERE SUBSTRING(A.Estadistica FROM 1 FOR 1) = :Estadistica
ORDER BY 1, 2
Me he llevado fuera el DISTINCT que había enla tabla temporal y ahora si me sale una única fila. Sólo queda mejorarlo ya que la salida no tiene una número fijo de columnas y para eso si que es muy intereante un STORED PROCEDURE.