

 Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im [Blog-Posting](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# ST\$1Collect
<a name="ST_Collect-function"></a>

ST\$1Collect hat zwei Varianten. Eine akzeptiert zwei Geometrien, die andere einen Aggregatausdruck. 

Die erste Variante von ST\$1Collect erstellt eine Geometrie aus den Eingabegeometrien. Die Reihenfolge der Eingabegeometrien bleibt erhalten. Diese Variante funktioniert wie folgt: 
+ Wenn beide Eingabegeometrien Punkte sind, wird ein `MULTIPOINT` mit zwei Punkten zurückgegeben. 
+ Wenn beide Eingabegeometrien Linestrings sind, wird ein `MULTILINESTRING` mit zwei Linestrings zurückgegeben. 
+ Wenn beide Eingabegeometrien Polygone sind, wird ein `MULTIPOLYGON` mit zwei Polygonen zurückgegeben. 
+ Andernfalls wird eine `GEOMETRYCOLLECTION` mit zwei Eingabegeometrien zurückgegeben. 

Die zweite Variante von ST\$1Collect erstellt eine Geometrie aus Geometrien in einer Geometrie-Spalte. Es gibt keine festgelegte Rückgabereihenfolge der Geometrien. Geben Sie die Klausel WITHIN GROUP (ORDER BY …) an, um die Reihenfolge der zurückgegebenen Geometrien festzulegen. Diese Variante funktioniert wie folgt: 
+ Wenn alle Nicht-NULL-Zeilen im Eingabeaggregatsausdruck Punkte sind, wird ein Multipoint zurückgegeben, der alle Punkte im Aggregatsausdruck enthält. 
+ Wenn alle Nicht-NULL-Zeilen im Aggregatsausdruck Linestrings sind, wird ein Multilinestring zurückgegeben, der alle Linestrings im Aggregatsausdruck enthält. 
+ Wenn alle Nicht-NULL-Zeilen im Aggregatsausdruck Polygone sind, wird ein Multipolygon zurückgegeben, das alle Polygone im Aggregatsausdruck enthält. 
+ Andernfalls wird eine `GEOMETRYCOLLECTION` zurückgegeben, die alle Geometrien im Aggregatausdruck enthält. 

ST\$1Collect gibt die Geometrie der gleichen Dimension wie die der Eingabegeometrien zurück. Alle Eingabegeometrien müssen die gleiche Dimension haben.

## Syntax
<a name="ST_Collect-function-syntax"></a>

```
ST_Collect(geom1, geom2)
```

```
ST_Collect(aggregate_expression)  [WITHIN GROUP (ORDER BY sort_expression1 [ASC | DESC] [, sort_expression2 [ASC | DESC] ...])]
```

## Argumente
<a name="ST_Collect-function-arguments"></a>

 *geom1*   
Ein Wert vom Datentyp `GEOMETRY` oder ein Ausdruck, der zu einem `GEOMETRY`-Typ ausgewertet wird. 

 *geom2*   
Ein Wert vom Datentyp `GEOMETRY` oder ein Ausdruck, der zu einem `GEOMETRY`-Typ ausgewertet wird. 

 *aggregate\$1expression*   
Eine Spalte vom Datentyp `GEOMETRY` oder ein Ausdruck, der zu einem `GEOMETRY`-Typ ausgewertet wird. 

 [WITHIN GROUP (ORDER BY *sort\$1expression1* [ASC \$1 DESC] [, *sort\$1expression2* [ASC \$1 DESC] ...])]   
Eine optionale Klausel, die die Sortierreihenfolge der aggregierten Werte angibt. Die Klausel ORDER BY enthält eine Liste von Sortierungsausdrücken. Sortierungsausdrücke sind Ausdrücke, die den gültigen Sortierungsausdrücken in einer Abfrageauswahlliste ähneln, z. B. einem Spaltennamen. Sie können aufsteigend (`ASC`) oder absteigend (`DESC`) sortieren. Der Standardwert ist `ASC`. 

## Rückgabetyp
<a name="ST_Collect-function-return"></a>

`GEOMETRY` des Subtyps `MULTIPOINT`, `MULTILINESTRING`, `MULTIPOLYGON` oder `GEOMETRYCOLLECTION`. 

Der SRID-Wert der zurückgegebenen Geometrie ist der SRID-Wert der Eingangsgeometrien. 

Wenn sowohl *geom1* oder *geom2* null sind, wird null zurückgegeben. 

Wenn alle Zeilen von *aggregate\$1expression* null sind, wird null zurückgegeben. 

Wenn *geom1* null ist, wird eine Kopie von *geom2* zurückgegeben. Wenn *geom2* null ist, wird eine Kopie von *geom1* zurückgegeben.

Wenn *geom1* und *geom2* unterschiedliche SRID-Werte haben, wird ein Fehler zurückgegeben. 

Wenn zwei Geometrien in *aggregate\$1expression* unterschiedliche SRID-Werte haben, wird ein Fehler zurückgegeben. 

Wenn die zurückgegebene Geometrie größer ist als die maximale Größe einer `GEOMETRY`, wird ein Fehler zurückgeben. 

Wenn *geom1* und *geom2* unterschiedliche Dimensionen haben, wird ein Fehler zurückgegeben. 

Wenn zwei Geometrien in *aggregate\$1expression* unterschiedliche Dimensionen haben, wird ein Fehler zurückgegeben. 

## Beispiele
<a name="ST_Collect-function-examples"></a>

Die folgende SQL-Anweisung eine Geometriesammlung zurück, die zwei Eingabegeometrien enthält. 

```
SELECT ST_AsText(ST_Collect(ST_GeomFromText('LINESTRING(0 0,1 1)'), ST_GeomFromText('POLYGON((10 10,20 10,10 20,10 10))')));
```

```
st_astext
-----------
 GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),POLYGON((10 10,20 10,10 20,10 10)))
```

Die folgende SQL-Anweisung erfasst alle Geometrien aus einer Tabelle in einer Geometriesammlung. 

```
WITH tbl(g) AS (SELECT ST_GeomFromText('POINT(1 2)', 4326) UNION ALL
SELECT ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL
SELECT ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL
SELECT NULL::geometry UNION ALL
SELECT ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326))
SELECT ST_AsEWKT(ST_Collect(g)) FROM tbl;
```

```
st_astext
-----------
 SRID=4326;GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(0 0,10 0),MULTIPOINT((13 4),(8 5),(4 4)),POLYGON((0 0,10 0,0 10,0 0)))
```

Die folgende SQL-Anweisung sammelt alle Geometrien in der Tabelle, gruppiert nach der ID-Spalte und geordnet nach dieser ID. In diesem Beispiel werden resultierende Geometrien wie folgt nach ID gruppiert: 
+ id 1 – Punkte in einem Multipoint.
+ id 2 – Linestrings in einem Multilinestring.
+ id 3 – gemischte Subtypen in einer Geometriesammlung.
+ id 4 – Polygone in einem Multipolygon.
+ id 5 – null und das Ergebnis ist null.

```
WITH tbl(id, g) AS (SELECT 1, ST_GeomFromText('POINT(1 2)', 4326) UNION ALL
SELECT 1, ST_GeomFromText('POINT(4 5)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(10 0,20 -5)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((20 20,20 30,30 20,20 20))', 4326) UNION ALL
SELECT 1, NULL::geometry UNION ALL SELECT 2, NULL::geometry UNION ALL
SELECT 5, NULL::geometry UNION ALL SELECT 5, NULL::geometry)
SELECT id, ST_AsEWKT(ST_Collect(g)) FROM tbl GROUP BY id ORDER BY id;
```

```
 id |                                                 st_asewkt                                                 
----+-----------------------------------------------------------------------------------------------------------
  1 | SRID=4326;MULTIPOINT((1 2),(4 5))
  2 | SRID=4326;MULTILINESTRING((0 0,10 0),(10 0,20 -5))
  3 | SRID=4326;GEOMETRYCOLLECTION(MULTIPOINT((13 4),(8 5),(4 4)),MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5)))
  4 | SRID=4326;MULTIPOLYGON(((0 0,10 0,0 10,0 0)),((20 20,20 30,30 20,20 20)))
  5 |
```

Die folgende SQL-Anweisung erfasst alle Geometrien aus einer Tabelle in einer Geometriesammlung. Die Ergebnisse werden in absteigender Reihenfolge nach `id` angeordnet und dann lexikografisch auf Grundlage ihrer minimalen und maximalen x-Koordinaten. 

```
WITH tbl(id, g) AS (
SELECT 1, ST_GeomFromText('POINT(4 5)', 4326) UNION ALL
SELECT 1, ST_GeomFromText('POINT(1 2)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(10 0,20 -5)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((20 20,20 30,30 20,20 20))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326) UNION ALL
SELECT 1, NULL::geometry UNION ALL SELECT 2, NULL::geometry UNION ALL
SELECT 5, NULL::geometry UNION ALL SELECT 5, NULL::geometry)
SELECT ST_AsEWKT(ST_Collect(g) WITHIN GROUP (ORDER BY id DESC, ST_XMin(g), ST_XMax(g))) FROM tbl;
```

```
                                                                                                                  st_asewkt                                                                                                                  
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 SRID=4326;GEOMETRYCOLLECTION(POLYGON((0 0,10 0,0 10,0 0)),POLYGON((20 20,20 30,30 20,20 20)),MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5)),MULTIPOINT((13 4),(8 5),(4 4)),LINESTRING(0 0,10 0),LINESTRING(10 0,20 -5),POINT(1 2),POINT(4 5)
```