@Alef Menezes, boa noite!
Segue uma possível solução.
/*
USE MASTER
GO
;WITH TAB
AS
(
SELECT CODCOLIGADA,CODFILIAL,CODPROF,NMDISCIPLINA,DIA,DIASEMANA,CODTURNO,TURNO,HORPREVISAO,CODHORPRE,NMTURMA
FROM
(VALUES
(2,9,'001706','LINGUA PORTUGUESA' ,3,'3ª TERÇA-FEIRA' ,1,'1° TURNO: MANHA','09:50 - 10:40',5,'7º ANO D')
,(2,9,'001706','LINGUA PORTUGUESA' ,3,'3ª TERÇA-FEIRA' ,1,'1° TURNO: MANHA','10:40 - 11:30',6,'7º ANO D')
,(2,9,'001706','LINGUA PORTUGUESA' ,5,'5ª QUINTA-FEIRA' ,1,'1° TURNO: MANHA','08:40 - 09:30',3,'7º ANO D')
,(2,9,'001706','LINGUA PORTUGUESA' ,5,'5ª QUINTA-FEIRA' ,1,'1° TURNO: MANHA','09:50 - 10:40',5,'7º ANO D')
,(2,9,'001706','REDAÇÃO' ,5,'5ª QUINTA-FEIRA' ,1,'1° TURNO: MANHA','10:40 - 11:30',6,'6º ANO G')
,(2,9,'001706','REDAÇÃO' ,6,'6ª SEXTA-FEIRA' ,1,'1° TURNO: MANHA','08:40 - 09:30',3,'6º ANO F')
,(2,9,'001706','LINGUA PORTUGUESA' ,6,'6ª SEXTA-FEIRA' ,1,'1° TURNO: MANHA','10:40 - 11:30',6,'7º ANO D')
,(2,9,'001706','LINGUA PORTUGUESA' ,2,'2ª SEGUNDA-FEIRA' ,2,'2° TURNO: TARDE','15:50 - 16:40',5,'7º ANO D')
,(2,9,'001706','LINGUA PORTUGUESA' ,3,'3ª TERÇA-FEIRA' ,2,'2° TURNO: TARDE','14:40 - 15:30',3,'7º ANO D')
,(2,9,'001706','REDAÇÃO' ,4,'4ª QUARTA-FEIRA' ,2,'2° TURNO: TARDE','15:50 - 16:40',5,'6º ANO G')
,(2,9,'001706','LINGUA PORTUGUESA' ,5,'5ª QUINTA-FEIRA' ,2,'2° TURNO: TARDE','14:40 - 15:30',3,'7º ANO D')
,(2,9,'001706','REDAÇÃO' ,6,'6ª SEXTA-FEIRA' ,2,'2° TURNO: TARDE','14:40 - 15:30',3,'6º ANO F')
,(2,9,'001706','LINGUA PORTUGUESA' ,6,'6ª SEXTA-FEIRA' ,2,'2° TURNO: TARDE','15:50 - 16:40',5,'7º ANO D')
) AS T (CODCOLIGADA,CODFILIAL,CODPROF,NMDISCIPLINA,DIA,DIASEMANA,CODTURNO,TURNO,HORPREVISAO,CODHORPRE,NMTURMA)
)
--SELECT * FROM TAB
, TAB_HORARIO
AS
(
SELECT CODCOLIGADA,CODFILIAL,CODHORPRE,HORPREVISAO,CODTURNO,TIPO
FROM
(VALUES
(2,9,1,'07:00 - 07:50',1,'N') ,(2,9,1,'13:00 - 13:50',2,'N')
,(2,9,2,'07:50 - 08:40',1,'N') ,(2,9,2,'13:50 - 14:40',2,'N')
,(2,9,3,'08:40 - 09:30',1,'N') ,(2,9,3,'14:40 - 15:30',2,'N')
,(2,9,4,'09:30 - 09:50',1,'I') ,(2,9,4,'15:30 - 15:50',2,'I')
,(2,9,5,'09:50 - 10:40',1,'N') ,(2,9,5,'15:50 - 16:40',2,'N')
,(2,9,6,'10:40 - 11:30',1,'N') ,(2,9,6,'16:40 - 17:30',2,'N')
,(2,9,7,'11:30 - 12:20',1,'N') ,(2,9,7,'17:30 - 18:20',2,'N')
) AS T (CODCOLIGADA,CODFILIAL,CODHORPRE,HORPREVISAO,CODTURNO,TIPO)
)
SELECT *
FROM TAB_HORARIO H
OUTER APPLY
(
SELECT TI.NMDISCIPLINA AS '2ª SEGUNDA-FEIRA'
FROM TAB TI
WHERE TI.CODCOLIGADA = H.CODCOLIGADA
AND TI.CODFILIAL = H.CODFILIAL
AND TI.CODTURNO = H.CODTURNO
AND TI.CODHORPRE = H.CODHORPRE
AND TI.DIA = 2
) SEG
OUTER APPLY
(
SELECT TI.NMDISCIPLINA AS '3ª TERÇA-FEIRA'
FROM TAB TI
WHERE TI.CODCOLIGADA = H.CODCOLIGADA
AND TI.CODFILIAL = H.CODFILIAL
AND TI.CODTURNO = H.CODTURNO
AND TI.CODHORPRE = H.CODHORPRE
AND TI.DIA = 3
) TER
OUTER APPLY
(
SELECT TI.NMDISCIPLINA AS '4ª QUARTA-FEIRA'
FROM TAB TI
WHERE TI.CODCOLIGADA = H.CODCOLIGADA
AND TI.CODFILIAL = H.CODFILIAL
AND TI.CODTURNO = H.CODTURNO
AND TI.CODHORPRE = H.CODHORPRE
AND TI.DIA = 4
) QUA
OUTER APPLY
(
SELECT TI.NMDISCIPLINA AS '5ª QUINTA-FEIRA'
FROM TAB TI
WHERE TI.CODCOLIGADA = H.CODCOLIGADA
AND TI.CODFILIAL = H.CODFILIAL
AND TI.CODTURNO = H.CODTURNO
AND TI.CODHORPRE = H.CODHORPRE
AND TI.DIA = 5
) QUI
OUTER APPLY
(
SELECT TI.NMDISCIPLINA AS '6ª SEXTA-FEIRA'
FROM TAB TI
WHERE TI.CODCOLIGADA = H.CODCOLIGADA
AND TI.CODFILIAL = H.CODFILIAL
AND TI.CODTURNO = H.CODTURNO
AND TI.CODHORPRE = H.CODHORPRE
AND TI.DIA = 6
) SEX
OUTER APPLY
(
SELECT TI.NMDISCIPLINA AS 'SABADO'
FROM TAB TI
WHERE TI.CODCOLIGADA = H.CODCOLIGADA
AND TI.CODFILIAL = H.CODFILIAL
AND TI.CODTURNO = H.CODTURNO
AND TI.CODHORPRE = H.CODHORPRE
AND TI.DIA = 7
) SAB
ORDER BY H.CODCOLIGADA, H.CODFILIAL, H.CODTURNO, H.CODHORPRE
/*
Result sets
Assim nesta consulta, podes colocar a quebra nos campos CODCOLIGADA, CODFILIAL CODTURNO e na questão do intervalo é só colocar um campo texto sobreposto aos campos da consulta e imprimir utilizando regra de formação no campo TIPO.
Executando essa matriz visual pela consulta, certamente irá ficar muito rápido.
Espero lhe ajudar.
Abraços.