con algo como esto se resuelve:
Código SQL:
Ver originalCREATE TABLE #temp
(
servicio VARCHAR(20),
especialidad VARCHAR(20),
mes INT,
horario datetime,
modificado VARCHAR(20)
)
INSERT INTO #temp VALUES ('medicina','cardio',1,getdate(),'Original')
INSERT INTO #temp VALUES ('medicina','cardio',1,getdate()+1,'Modificado')
INSERT INTO #temp VALUES ('medicina','no se',2,getdate()+2,'Original')
INSERT INTO #temp VALUES ('medicina','no se',3,getdate()+3,'Original')
INSERT INTO #temp VALUES ('medicina','otro',4,getdate()+4,'Original')
INSERT INTO #temp VALUES ('medicina','otro',4,getdate()+5,'Modificado')
SELECT * FROM #temp
SELECT t2.servicio,t2.especialidad,t2.mes,CASE WHEN isnull(t1.servicio,'')<>'' THEN t1.horario ELSE t2.horario END AS horario FROM(
SELECT servicio,especialidad,mes,horario FROM #temp WHERE modificado='modificado' GROUP BY servicio,especialidad,mes,horario
) AS t1 RIGHT JOIN
(
SELECT servicio,especialidad,mes,horario FROM #temp WHERE modificado='original' GROUP BY servicio,especialidad,mes,horario
) AS t2 ON (t1.servicio=t2.servicio AND t1.especialidad=t2.especialidad AND t1.mes=t2.mes)