如何制定聚合不同值的SQL Server索引视图?

时间:2010-04-28 18:41:44

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

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

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

TABLE Item {
   ItemId,
   ItemCollectionId,
   ContributorId

}

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

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

我还想使用索引(物化)视图预先计算此聚合。 DISTINCT阻止将索引放在此视图上。有没有办法重新制定这个不会违反SQL Server索引视图约束的内容?

2 个答案:

答案 0 :(得分:2)

显然不可能。

答案 1 :(得分:0)

SELECT
   ItemCollectionId,
   COUNT(DISTINCT ContributorId),
   COUNT_BIG(*) AS DummyColumn
FROM Item
GROUP BY ItemCollectionId

汇总需要COUNT_BIG(*)as mentioned in MSDN

这也说“没有DISTINCT”而且我不确定(从未尝试过,对不起)如果这适用于它在聚合中的使用(如你所有),或SELECT DISTINCT...