Probá este SQL dinámico:
Código SQL:
Ver originalDECLARE @SQL VARCHAR(MAX);
WITH T AS
(SELECT COUNT(*) OVER() N,
Cr.id,
Cr.nombre CrNombre,
InCr.nombre InCrNombre
FROM #correcto Cr
INNER JOIN #incorrecto InCr
ON Cr.id=InCr.id_correcto)
SELECT @SQL='Replace('+IsNull(@SQL+',','direccion,')+''''+InCrNombre+''','''+CrNombre+''')'
FROM T;
SELECT @SQL='Select *,'+CHAR(13)+CHAR(9)+CHAR(9)+@SQL+' direccion_corecto'+CHAR(13)+'From #datos;';
Print @SQL;
EXEC(@SQL);