Как сформулировать представленное представление SQL Server, что агрегаты отчетливых значений?

StackOverflow https://stackoverflow.com/questions/2732231

Вопрос

У меня есть схема, которая включает в себя таблицы, такие как следующее (псевдо схема):

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

TABLE Item {
   ItemId,
   ItemCollectionId,
   ContributorId

}

Мне нужно объединить количество различных участников на itemCollectionId. Это возможно с запросом, как:

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

Я также хочу предварительно рассчитать эту агрегацию, используя индексированный (материализованный) вид. Отличный предотвращает размещение индекса на этот вид. Есть ли способ переформулировать это, что не будет нарушать индексированные проиндексированные ограничения SQL Server?

Это было полезно?

Решение

Не возможно, видимо.

Другие советы

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

Совокупность потребует COUNT_BIG (*) Как упоминалось в MSDN.

Это также говорит «нет отчетливых», и я не уверен (никогда не пробовал, извините), если это относится к этому в агрегате (как у вас есть), или SELECT DISTINCT...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top