Erreur d'ajout d'un index à vue
-
25-09-2019 - |
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.
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