创建索引视图时出错

时间:2009-12-04 11:56:24

标签: sql sql-server tsql sql-server-2005 indexed-view

我的观点中有一个计数栏的问题。

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

View正在正确编译但是当我尝试添加索引时收到错误:

"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 个答案:

答案 0 :(得分:1)

试试GROUP BY ColumnC, ColumnA % ColumnB

从您的链接:

  

..不能包含... GROUP BY子句中使用的列上的表达式,或聚合结果上的表达式。

我认为这意味着您无法按列对模块进行模数化。但是,您应该能够在GROUP BY中执行表达式,只需在select子句中重复