1

ビューのカウント列に問題があります。

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。

4

1 に答える 1

1

試してみGROUP BY ColumnC, ColumnA % ColumnBますか?

あなたのリンクから:

..含むことはできません... GROUP BY 句で使用される列の式、または集計の結果の式。

これは、グループごとの列をモジュロできないことを意味すると思います。ただし、GROUP BY で式を実行し、select 句で単純に繰り返すことができるはずです。

于 2009-12-04T12:50:00.790 に答える