Lo he podido resolver de esta manera por si alguien le interesa.
Lo hice de esta manera.
SELECT CAST(RESULTADOS.COD_PADRE AS CHAR(5)) AS Cod_padre, cast(RESULTADOS.Padre as varchar(250)) as Padres, max(RESULTADOS.hijo1) as Hijo1,
max(RESULTADOS.GRADO1) as grado1,max(RESULTADOS.hijo2) as Hijo2,max(RESULTADOS.Grado2) as grado2,max(RESULTADOS.hijo3) as Hijo3,max(RESULTADOS.grado3) as Hijo3
FROM(
SELECT cod_padre
, padre
,HIJO1
,Grado1
,'' as HIJO2
,'' as Grado2
,'' as HIJO3
,'' as grado3
FROM (
SELECT p.cod_padre,
(p.nombre + ' ' + p.apellido) as Padre,
(a.nombre) AS HIJO1, (a.grado +''+ a.seccion) as GRADO1,
ROW_NUMBER() OVER (PARTITION BY p.cod_padre
ORDER BY a.fecha_nac ) idhijo
FROM padre p
inner join alu a
on p.cod_padre = a.cod_padre) P
WHERE idhijo=1
UNION
SELECT cod_padre
, padre
,'' AS HIJO1
,'' AS Grado1
,HIJO2
,Grado2
,'' as HIJO3
,'' as grado3
FROM (
SELECT p.cod_padre,
(p.nombre + ' ' + p.apellido) as Padre,
(a.nombre) AS HIJO2, (a.grado +''+ a.seccion) as GRADO2,
ROW_NUMBER() OVER (PARTITION BY p.cod_padre
ORDER BY a.fecha_nac ) idhijo
FROM padre p
inner join alu a
on p.cod_padre = a.cod_padre) P
WHERE idhijo=2
UNION
SELECT cod_padre
, padre
,'' AS HIJO1
,'' AS Grado1
,'' AS HIJO2
,'' AS Grado2
,HIJO3
,grado3
FROM (
SELECT p.cod_padre,
(p.nombre + ' ' + p.apellido) as Padre,
(a.nombre) AS HIJO3, (a.grado +''+ a.seccion) as GRADO3,
ROW_NUMBER() OVER (PARTITION BY p.cod_padre
ORDER BY a.fecha_nac ) idhijo
FROM padre p
inner join alu a
on p.cod_padre = a.cod_padre) P
WHERE idhijo=3) AS RESULTADOS
GROUP BY RESULTADOS.cod_padre,RESULTADOS.Padre
order by cod_padre
Resultado:
soucionado