Pergunta

Eu criei uma visualização usando o seguinte 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` 

Agora, quando eu uso:

CREATE UNIQUE CLUSTERED INDEX two_weeks_performance_I ON two_weeks_performance (Date)

Estou recebendo um erro:

Não é possível criar índice porque sua lista de seleção não usa o uso correto de count_big (). Considere adicionar count_big (*) à seleção.

Por favor me ajude a resolver este problema.

Foi útil?

Solução

O erro informa exatamente o que você precisa fazer - adicione count_big (*) à sua lista de seleção.

A partir de Criando visualizações indexadas:

Se o grupo for especificado, a lista de seleção de exibição deve conter uma expressão count_big (*) e a definição de exibição não pode especificar conjuntos de ter, rollup, cubo ou agrupamento.

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top