Ошибка добавления индекса на вид
-
25-09-2019 - |
Вопрос
Я создал представление, используя следующий код
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`
Теперь, когда я использую:
CREATE UNIQUE CLUSTERED INDEX two_weeks_performance_I ON two_weeks_performance (Date)
Я получаю ошибку:
Не удается создать индекс, потому что его список выбора не использует правильное использование COUNT_BIG (). Рассмотрим добавление COUNT_BIG (*) на выбор.
Пожалуйста, помогите мне решить эту проблему.
Решение
Ошибка сообщает вам, что именно вы должны сделать - добавьте COMP_BIG (*) в список выбора.
От Создание индексированных просмотров:
Если указана Group by, список выбора SELECT должен содержать выражение COUNT_BIG (*), и определение просмотра не может указать наборы, выпусков, CUBE или группировку.
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)
Не связан с StackOverflow