Gibt einen Wert vom Typ Variant (String) zurück, der angibt, wo eine Zahl innerhalb einer berechneten Folge von Bereichen auftritt.
Syntax
partition(number, start, stop, interval)
Die Syntax der Funktion Partition weist die folgenden Argumente auf:
| Argument | Beschreibung |
|---|---|
| Zahl | Erforderlich. Ganze Zahl, für die Sie den zugehörigen Bereich ermitteln möchten. |
| Startwert | Erforderlich. Eine ganze Zahl, die den Anfang des Zahlenbereichs insgesamt bildet. Die Zahl darf nicht kleiner als 0 sein. |
| Endwert | Erforderlich. Ganze Zahl, die das Ende des Zahlenbereichs insgesamt bildet. Die Zahl darf nicht gleich oder kleiner als Start sein. |
| Intervall | Erforderlich. Ganze Zahl, die die Größe der Partitionen innerhalb des Gesamtbereichs von Zahlen angibt (zwischen Start und Ende). |
Hinweise
Die Partition-Funktion identifiziert den bestimmten Bereich, in den die Zahl fällt, und gibt eine Variante (Zeichenfolge) zurück, die diesen Bereich beschreibt. Die Partition-Funktion eignet sich am besten für Abfragen. Sie können eine Auswahlabfrage erstellen, die zeigt, wie viele Bestellungen in verschiedenen Bereichen enthalten sind, z. B. Bestellwerte von 1 bis 1000, 1001 bis 2000 und so weiter.
Die folgende Tabelle zeigt, wie die Bereiche mithilfe von drei Sätzen von Start-, Stopp- und Intervallargumenten bestimmt werden. Die Spalten "Erster Bereich" und "Letzter Bereich" zeigen, was Partition zurückgibt. Die Bereiche werden durch lowervalue:uppervalue dargestellt, wobei das untere Ende (unterer Wert) des Bereichs vom oberen Ende (oberer Wert) des Bereichs durch einen Doppelpunkt (:) getrennt ist.
| Beginn | Stopp | Intervall | Vor dem Ersten | Erster Bereich | Letzter Bereich | Nach dem Letzten |
|---|---|---|---|---|---|---|
| 0 | 99 | 5 | " :-1" | " 0: 4 | " 95: 99" | " 100: " |
| 20 | 199 | 10 | " : 19 | " 20: 29" | " 190: 199" | " 200: " |
| 100 | 1010 | 20 | " : 99" | " 100: 119" | " 1000: 1010" | " 1011: " |
In der oben gezeigten Tabelle zeigt die dritte Zeile das Ergebnis, wenn Start und Stopp eine Reihe von Zahlen definieren, die nicht gleichmäßig durch Intervalle geteilt werden können. Der letzte Bereich erstreckt sich bis stop (11 Zahlen), obwohl das Intervall 20 ist.
Falls erforderlich, gibt Partition einen Bereich mit genügend führenden Leerzeichen zurück, sodass links und rechts vom Doppelpunkt dieselbe Anzahl von Zeichen wie Zeichen in Stop plus eins vorhanden sind. Dadurch wird sichergestellt, dass bei Verwendung von Partition mit anderen Zahlen der sich daraus ergebende Text bei nachfolgenden Sortiervorgängen ordnungsgemäß behandelt werden.
Wenn "Intervall " 1 ist, ist der Bereich "Zahl:Zahl", unabhängig von den Start - und Beendigungsargumenten . Wenn "Intervall " beispielsweise "1", "Zahl " gleich 100 und "Stopp " 1000 ist, gibt "Partition " 100: 100" zurück.
Wenn ein Teil ist Null, gibt Partition eine Null zurück.
Abfragebeispiele
| Ausdruck | Ergebnisse |
|---|---|
| SELECT Partition(unitprice,40,240,20) AS PriceRange, count(productsales.unitprice) AS Count FROM productSales GROUP BY Partition(unitprice,40,240,20); | Erstellt eine Reihe von Bereichen für die Werte im Feld "Einzelpreis" von "Start"(40) bis "Stopp"(240) mit gleicher "Intervall"(20)-Größe und berechnet die Anzahl der "Einzelpreise" in den jeweiligen Bereichen. Zeigt die Bereiche in Spalte "PriceRange" und die Anzahl in der Spalte "Anzahl" an. |
VBA-Beispiel
In diesem Beispiel wird davon ausgegangen, dass Sie über die Tabelle Bestellungen verfügen, die das Feld "Fracht" enthält. Es erstellt ein Auswahlverfahren, das die Anzahl der Bestellungen zählt, für die die Frachtkosten in jeden von mehreren Bereichen fallen. Die Funktion Partition wird zuerst verwendet, um diese Bereiche festzulegen, dann zählt die SQL-Funktion Count die Anzahl der Bestellungen in jedem Bereich. In diesem Beispiel sind die Argumente für die Partitionsfunktionstart = 0, stop = 500, interval = 50. Der erste Bereich wäre daher 0:49 und so weiter bis zu 500.
SELECT DISTINCTROW Partition([freight],0, 500, 50) AS Range,
Count(Orders.Freight) AS Count
FROM Orders
GROUP BY Partition([freight],0,500,50);