我有一个包含以下表格的模式(伪模式):
TABLE ItemCollection {
ItemCollectionId
...etc...
}
TABLE Item {
ItemId,
ItemCollectionId,
ContributorId
}
我需要聚合每个ItemCollectionId的不同贡献者的数量。这可以通过以下查询实现:
SELECT ItemCollectionId, COUNT(DISTINCT ContributorId) FROM Item
GROUP BY ItemCollectionId
我还想使用索引(物化)视图预先计算此聚合。 DISTINCT阻止将索引放在此视图上。有没有办法重新制定这个不会违反SQL Server索引视图约束的内容?
答案 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...