Question

J'ai créé une vue en utilisant le code suivant

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` 

Maintenant, quand je l'utilise:

CREATE UNIQUE CLUSTERED INDEX two_weeks_performance_I ON two_weeks_performance (Date)

Je reçois une erreur:

  

Impossible de créer l'index parce que la liste de sélection n'utilise pas l'utilisation correcte de COUNT_BIG (). Pensez à ajouter COUNT_BIG (*) à la sélection.

S'il vous plaît aidez-moi à résoudre ce problème.

Était-ce utile?

La solution

L'erreur vous indique exactement ce que vous avez à faire -. Ajouter COUNT_BIG (*) à votre liste de sélection

De Création des vues indexées :

  

Si GROUP BY est spécifiée, la vue   liste de sélection doit contenir une   COUNT_BIG (*) expression, et la vue   définition ne peut pas spécifier HAVING,   ROLLUP, CUBE ou 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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top