3

我有一个包含如下表的模式(伪模式):

TABLE ItemCollection {
   ItemCollectionId
   ...etc...
}

TABLE Item {
   ItemId,
   ItemCollectionId,
   ContributorId

}

我需要汇总每个 ItemCollectionId 的不同贡献者的数量。这可以通过如下查询来实现:

SELECT ItemCollectionId, COUNT(DISTINCT ContributorId) FROM Item
 GROUP BY ItemCollectionId

我还想使用索引(物化)视图预先计算此聚合。DISTINCT 防止在此视图上放置索引。有什么方法可以重新制定这不会违反 SQL Server 的索引视图约束?

4

2 回答 2

2

显然不可能。

于 2010-10-18T15:18:01.153 回答
0
SELECT
   ItemCollectionId,
   COUNT(DISTINCT ContributorId),
   COUNT_BIG(*) AS DummyColumn
FROM Item
GROUP BY ItemCollectionId

如 MSDN 中所述,聚合将需要 COUNT_BIG(*) 。

这也表示“没有 DISTINCT”,我不确定(从未尝试过,抱歉)这是否适用于它在聚合中的使用(如你所见),或者SELECT DISTINCT...

于 2010-04-28T19:11:18.227 回答