Ошибка при создании индексированного представления - PullRequest
1 голос
/ 04 декабря 2009

У меня проблема со счетным столбцом в моем представлении.

SELECT ColumnC, ColumnA % ColumnB AS ModuloColAColB, COUNT_BIG(*) AS cBig FROM dbo.T1
GROUP BY ColumnC, ModuloColAColB 

Запрос похож на этот пример MSDN: http://msdn.microsoft.com/en-us/library/ms191432.aspx

Когда я пытаюсь скомпилировать вид, я получаю сообщение об ошибке вроде: "неверное имя столбца ModuloColAColB"

Поэтому я меняю группу по именам столбцов:

SELECT ColumnC, ColumnA % ColumnB AS ModuloColAColB,
COUNT_BIG(*) AS cBig FROM dbo.T1
GROUP BY ColumnC, ColumnA, ColumnB

Вид компилируется правильно, но когда я пытаюсь добавить индекс, я получаю сообщение об ошибке:

"Cannot create the clustered index 'px_test' on view 'l' because the select list of the view contains an expression on result of aggregate function or grouping column.
Consider removing expression on result of aggregate function or grouping column from select list"

Когда я удаляю «ColumnA% ColumnB AS ModuloColAColB», все работает нормально.

Версия базы данных: SQL Server 2005 Enterprise Edition.

1 Ответ

1 голос
/ 04 декабря 2009

Попробуйте GROUP BY ColumnC, ColumnA % ColumnB?

По вашей ссылке:

.. не может содержать ... Выражение для столбца, используемого в предложении GROUP BY, или выражение для результатов агрегата.

Я думаю, это означает, что вы не можете по модулю в своей группе по столбцам. Однако вы должны иметь возможность сделать выражение в GROUP BY и просто повторить в предложении select

...