Frage

Ich habe ein Schema, das Tabellen wie folgt aus (Pseudo-Schema) enthält:

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

TABLE Item {
   ItemId,
   ItemCollectionId,
   ContributorId

}

Ich brauche die Anzahl der verschiedenen Mitwirkenden pro ItemCollectionId aggregieren. Dies ist möglich, mit einer Abfrage wie:

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

Ich möchte weiter im Voraus berechnen diese Aggregation eine indizierte (materialisiert)-Ansicht. Die deutliche verhindert einen Index auf dieser Ansicht angeordnet wird. Gibt es eine Möglichkeit, dies zu formulieren, die nicht verletzen, werden von SQL Server indizierten Sicht Einschränkungen?

War es hilfreich?

Lösung

Nicht möglich, scheinbar.

Andere Tipps

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

Ein Aggregat erfordert COUNT_BIG (*) wie erwähnt in MSDN .

Das sagt auch „kein DISTINCT“ und ich bin mir nicht sicher (es nie versucht, sorry), wenn dies gilt Verwendung des in einem Aggregat (wie Sie) oder SELECT DISTINCT...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top