Bueno, yo sigo con mi intento de vista indexada para resolver situaciones de
campos calculados sin necesidad de usar triggers.
Intento hacer la siguiente consulta:
CREATE VIEW VISTA_PROYECTOS_BASE WITH SCHEMABINDING
AS
SELECT SUM(ISNULL(A.IMPORTE,0)) AS PRESUPUESTO, P.COD_PROYECTO, NEMO_PROY,
COD_DPTO, COUNT_BIG(*) AS CUENTA FROM DBO.SQL_PROYECTOS P
LEFT OUTER JOIN DBO.SQL_ANUALIDADES A ON P.COD_PROYECTO=A.COD_PROYECTO
GROUP BY P.COD_PROYECTO, NEMO_PROY, COD_DPTO
GO
CREATE UNIQUE CLUSTERED INDEX IDX_COD_PROYECTO ON
dbo.VISTA_PROYECTOS_BASE(COD_PROYECTO, COD_DPTO)
El mensaje de error es:
No se puede crear índice en la vista "GEST_PRO.dbo.VISTA_PROYECTOS_BASE"
porque utiliza una combinación LEFT, RIGHT o FULL OUTER y no se permiten
combinaciones OUTER en vistas indizadas. Considere el uso de una combinación
INNER en su lugar.
Otra alternativa era usar una subconsulta, pero tampoco va, y la sugerencia
de SQL Server es: No lo uses... Lo que pasa es que no todos los proyectos
tienen por que tener anualidades, y yo los necesito todos
La vista trae muchos más datos, tengo que hacer mínimo otro left join sobre
un campo calculado que hace referencia a otra tabla, y además necesito tomar
de otras tablas campos convencionales también usando un outer
¿Qué puedo hacer al respecto?
Saludos
Leer las respuestas