У меня есть схема, которая включает в себя таблицу, как следующая схема (псевдо):Как сформулировать индексированное представление SQL Server, которое объединяет различные значения?
TABLE ItemCollection {
ItemCollectionId
...etc...
}
TABLE Item {
ItemId,
ItemCollectionId,
ContributorId
}
мне нужно агрегировать число различных доноров в ItemCollectionId. Это возможно с запросом, как:
SELECT ItemCollectionId, COUNT(DISTINCT ContributorId) FROM Item
GROUP BY ItemCollectionId
Я также хочу, чтобы заранее рассчитать эту агрегацию, используя индексированный (материализованный) вид. DISTINCT предотвращает размещение индекса на этом представлении. Есть ли способ переформулировать это, что не будет нарушать индексированные ограничения SQL Server?
Никаких кубиков, DISTINCT убивает его, как только вы пытаетесь создать кластеризованный уникальный индекс. – jlew
@Jeremy Lew: в этом случае вам придется поддерживать таблицу с помощью триггера, я боюсь ... – gbn