Ошибка добавления индекса в представление - PullRequest
3 голосов
/ 17 ноября 2010

Я создал представление, используя следующий код

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 (*) в выбор.

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

6 голосов
/ 17 ноября 2010

Ошибка говорит вам точно, что вы должны сделать - добавьте COUNT_BIG (*) в ваш список выбора.

С Создание индексированных представлений :

Если указана GROUP BY, список выбора представления должен содержать выражение COUNT_BIG (*), а определение представления не может указывать HAVING, ROLLUP, CUBE или GROUPING SETS.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...