2010-11-17 4 views
3

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

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) 

Я получаю сообщение об ошибке:

Cannot create index because its select list does not use the correct usage of COUNT_BIG(). Consider adding COUNT_BIG(*) to the select.

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

ответ

6

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

От Creating Indexed Views:

If GROUP BY is specified, the view select list must contain a COUNT_BIG(*) expression, and the view definition cannot specify HAVING, ROLLUP, CUBE, or 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) 
+0

спасибо, что ... это было полезно !! – Deepak

Смежные вопросы