Con sesión me refiero a la conexión que tienes establecida con la base de datos: al crear una tabla antecediéndola con el caracter # se crea sólo para tu sesión y las otras sesiones no la ven.
Por ejemplo, mi idea es que en el procedimiento almacenado donde tienes el select con el union, en vez de hacer el union hagas esto:
Código:
SELECT <campos>
INTO #TablasUnidas -- Aquí se crea la tabla y al antecederla con # será sólo para tu sesión.
FROM Tabla1
WHERE <condiciones>
-- Agregar los registros de la tabla 2
INSERT INTO #TablasUnidas
SELECT <campos>
FROM Tabla2
WHERE <condiciones>
-- Regresar los registros pedidos al SP
SELECT *
FROM #TablasUnidas
-- Eliminar la tabla (de no hacerlo se elimina cuando se cierra la conexión).
DROP TABLE #TablasUnidas
¿Me doy a entender?