Error al añadir un índice a una vista
-
25-09-2019 - |
Pregunta
He creado una vista usando el siguiente código
CREATE VIEW dbo.two_weeks_performance WITH SCHEMABINDING
AS
SELECT dbo.day_dim.date_time AS Date,
dbo.order_dim.quantity AS Target_Acheived
FROM dbo.day_dim
JOIN dbo.order_fact ON dbo.day_dim.day_id = dbo.order_fact.day_id
JOIN dbo.branch_dim ON dbo.order_fact.branch_id = dbo.branch_dim.branch_id
JOIN dbo.order_dim ON dbo.order_fact.order_id = dbo.order_dim.order_id
GROUP BY dbo.order_dim.quantity, dbo.day_dim.date_time`
Ahora cuando uso:
CREATE UNIQUE CLUSTERED INDEX two_weeks_performance_I ON two_weeks_performance (Date)
Estoy consiguiendo un error:
No se puede crear el índice, ya que su lista de selección no utiliza el uso correcto de COUNT_BIG (). Considerar la adición de COUNT_BIG (*) a la selección.
Por favor me ayude a resolver este problema.
Solución
El error que dice exactamente lo que tiene que hacer -. Añadir COUNT_BIG (*) a su lista de selección
Si se especifica GROUP BY, la vista lista de selección debe contener una COUNT_BIG (*) expresión, y la vista definición, no puede especificar HAVING, ROLLUP, CUBE, o conjuntos de agrupación.
CREATE VIEW dbo.two_weeks_performance WITH SCHEMABINDING
AS
SELECT dbo.day_dim.date_time AS Date,
dbo.order_dim.quantity AS Target_Acheived,
COUNT_BIG(*) as Cnt
FROM dbo.day_dim
JOIN dbo.order_fact ON dbo.day_dim.day_id = dbo.order_fact.day_id
JOIN dbo.branch_dim ON dbo.order_fact.branch_id = dbo.branch_dim.branch_id
JOIN dbo.order_dim ON dbo.order_fact.order_id = dbo.order_dim.order_id
GROUP BY dbo.order_dim.quantity, dbo.day_dim.date_time
GO
CREATE UNIQUE CLUSTERED INDEX two_weeks_performance_I ON two_weeks_performance (Date)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow