Errore durante l'aggiunta di un indice per una vista
-
25-09-2019 - |
Domanda
Ho creato una vista utilizzando il seguente codice
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`
Ora, quando io uso:
CREATE UNIQUE CLUSTERED INDEX two_weeks_performance_I ON two_weeks_performance (Date)
sto ottenendo un errore:
Impossibile creare l'indice perché il suo elenco di selezione non usa l'uso corretto di COUNT_BIG (). Considerare l'aggiunta di COUNT_BIG (*) per la selezione.
Si prega di aiutarmi a risolvere questo problema.
Soluzione
L'errore ti dice esattamente quello che deve fare. - aggiungi COUNT_BIG (*) alla tua lista di selezione
Creazione di viste indicizzate :
Se GROUP BY viene specificato, la vista selezionare lista deve contenere un COUNT_BIG (*) espressione, e la vista definizione non può specificare AVERE, ROLLUP, CUBE o 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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow