FREE tools

UNNEST in SQL: So zerlegst du Arrays und Nested Data richtig

Lukas Fuchs vor 1 Monat Datenbanken & ORM 3 Min. Lesezeit

Wenn du Arrays oder verschachtelte Daten in SQL sauber auflösen willst, führt an UNNEST kein Weg vorbei. Ich zeige dir, wie ich es nutze, wann es sinnvoll ist und welche Fehler du vermeiden musst.

UNNEST in SQL

UNNEST in SQL ist eines dieser Features, das dir sofort Zeit spart, wenn du mit Arrays oder verschachtelten Daten arbeitest. Statt komplizierte Workarounds zu bauen, zerlege ich damit Daten direkt in einzelne Zeilen. Das macht Abfragen einfacher, Analysen sauberer und Reports deutlich flexibler.

Was macht UNNEST in SQL?

UNNEST nimmt ein Array oder eine verschachtelte Struktur und macht daraus mehrere Zeilen. Genau das ist der Punkt. Ich habe also nicht mehr eine Zeile mit vielen Werten in einem Feld, sondern pro Wert eine eigene Zeile.

Ein einfaches Beispiel:

SELECT UNNEST(ARRAY[1, 2, 3]);

Das Ergebnis sind drei Zeilen mit den Werten 1, 2 und 3. Kein Zauber. Nur sauberer Datenzugriff.

Wann ich UNNEST in SQL nutze

Ich nutze UNNEST in SQL, wenn Daten nicht normalisiert sind oder wenn ein Feld mehrere Werte enthält. Typische Fälle:

  • Tags, Kategorien oder Labels in einem Array
  • Produktlisten in Bestellungen
  • Events mit mehreren Attributen
  • JSON-Strukturen mit verschachtelten Arrays
  • Analytics-Daten in BigQuery, PostgreSQL oder Snowflake

Wenn ich das nicht auflöse, wird jede Analyse unnötig schwer. Mit UNNEST mache ich die Daten direkt auswertbar.

UNNEST in SQL: Grundsyntax

Die Syntax hängt leicht vom Datenbanksystem ab. Das Prinzip bleibt gleich. Ich zeige dir die gängigen Varianten.

PostgreSQL

SELECT *
FROM UNNEST(ARRAY['A', 'B', 'C']) AS t(value);

Mehr dazu findest du in der offiziellen PostgreSQL-Dokumentation: PostgreSQL Array Functions.

BigQuery

SELECT value
FROM UNNEST(['A', 'B', 'C']) AS value;

BigQuery beschreibt das hier: BigQuery Arrays.

Snowflake

SELECT value
FROM TABLE(FLATTEN(input => ARRAY_CONSTRUCT('A', 'B', 'C')));

Snowflake nutzt oft FLATTEN statt klassischem UNNEST. Die Doku dazu: Snowflake FLATTEN.

UNNEST in SQL mit mehreren Spalten

Oft reicht ein Array mit einem Wert nicht. Ich will den Wert zusammen mit einer ID, einem Datum oder einer Kategorie behalten. Dann kombiniere ich UNNEST mit einer bestehenden Tabelle.

SELECT
  user_id,
  tag
FROM users,
UNNEST(tags) AS tag;

Das ist stark, weil ich jede Zeile sauber aufsplitte und trotzdem den Kontext behalte.

Worauf ich bei UNNEST in SQL achte

UNNEST ist einfach. Aber einfach heißt nicht automatisch sauber. Hier sind die Dinge, die ich immer prüfe:

  • Reihenfolge: Manche Systeme behalten die Reihenfolge nicht automatisch. Wenn sie wichtig ist, speichere ich sie explizit mit einem Index.
  • Leere Arrays: Ein leeres Array kann zu null Ergebnissen führen. Das muss ich im Query-Design einkalkulieren.
  • NULL-Werte: NULL ist nicht dasselbe wie ein leeres Array. Das macht einen echten Unterschied in der Analyse.
  • Duplikate: UNNEST entfernt keine Duplikate. Wenn Werte mehrfach vorkommen, bleiben sie mehrfach drin.
  • Performance: Bei sehr großen Arrays kann die Zeilenzahl explodieren. Dann filtere ich früh und gezielt.

UNNEST in SQL mit JOIN kombinieren

Ein häufiger Anwendungsfall ist der Join mit einer anderen Tabelle. Genau hier wird UNNEST richtig nützlich.

SELECT
  o.order_id,
  item
FROM orders o
CROSS JOIN UNNEST(o.items) AS item;

Ich verwende CROSS JOIN, wenn ich jedes Element aus dem Array mit der Ursprungzeile verknüpfen will. Das ist oft der schnellste Weg, um Bestelldaten, Eventdaten oder User-Events sauber aufzubrechen.

UNNEST in SQL für JSON-Daten

Viele moderne Daten liegen nicht mehr sauber normalisiert in Tabellen. Sie kommen als JSON rein. Dann ist UNNEST oft der erste Schritt, um aus Chaos wieder Struktur zu machen.

Wenn in einem JSON-Feld ein Array steckt, hole ich es raus, flache es ab und arbeite weiter mit normalen SQL-Operationen. Das ist viel besser, als alles im Anwendungscode zu lösen.

Die besten Tipps für saubere UNNEST-Queries

  • Filter so früh wie möglich, bevor du große Arrays auflöst.
  • Gib Spalten klare Aliase, damit deine Query lesbar bleibt.
  • Prüfe NULL und leere Arrays getrennt.
  • Nutze Aggregationen nach dem UNNEST, wenn du wieder auf eine höhere Ebene zurück willst.
  • Dokumentiere die Datenstruktur, damit niemand später raten muss, was im Array steckt.

Häufige Fehler bei UNNEST in SQL

Ich sehe immer wieder dieselben Fehler:

  • UNNEST wird ohne Alias verwendet, und die Query wird unlesbar.
  • Mehrere Arrays werden falsch kombiniert und erzeugen falsche Zeilenmengen.
  • NULL wird mit leerem Array verwechselt.
  • Es wird unnötig früh unnested, obwohl erst später ein Filter greift.
  • Die Abfrage wird nicht getestet, obwohl ein einzelnes Array komplett andere Ergebnisse erzeugen kann.

Mein Ansatz ist simpel: erst verstehen, dann auflösen, dann filtern, dann auswerten.

Wann UNNEST in SQL die falsche Lösung ist

UNNEST ist stark, aber nicht immer die beste Wahl. Wenn ich die Daten dauerhaft analysiere, ist eine saubere Normalisierung oft besser. Wenn Arrays nur aus schlechtem Datenmodell entstehen, sollte ich die Quelle lieber reparieren statt alles permanent zu zerlegen.

Ich nutze UNNEST also nicht als Krücke für schlechtes Design. Ich nutze es als Werkzeug für schnelle, klare Analysen.

Fazit zu UNNEST in SQL

UNNEST in SQL ist eines der nützlichsten Werkzeuge für Arrays, JSON und verschachtelte Daten. Es macht Daten auswertbar, Queries sauberer und Analysen schneller. Wenn ich weiß, wie ich es richtig einsetze, spare ich mir unnötige Komplexität und komme direkt zu brauchbaren Ergebnissen. Genau deshalb gehört UNNEST in SQL in jedes SQL-Playbook.

Weitere Beiträge

Folge uns

Neue Beiträge

DevOps & Deployment

Uptime Windows: Wie man die Verfügbarkeit seines Windows-Systems optimiert

AUTOR • Jul 20, 2026
Performance & SEO

Import Startlayout: So setzt du Import-Startlayouts sauber und effizient ein

AUTOR • Jul 20, 2026
Performance & SEO

Welche KW jetzt? So finde ich die aktuelle Kalenderwoche in Sekunden

AUTOR • Jul 20, 2026
Webdesign & UX

E-Mail wiederherstellen: So bekommst du gelöschte oder verlorene Mails schnell zurück

AUTOR • Jul 20, 2026
Webdesign & UX

Google Sicherheitscheck durchführen: So prüfst du dein Konto in 10 Minuten

AUTOR • Jul 19, 2026
Webdesign & UX

Word Auswahlfeld einfügen: So erstellst du Dropdowns in Word schnell und sauber

AUTOR • Jul 19, 2026
Webdesign & UX

Office Lizenz aktivieren: So schaltest du Microsoft Office sauber frei

AUTOR • Jul 19, 2026
Backend-Entwicklung

Python Dezimal Binär umrechnen: So wandelst du Zahlen sauber und schnell

AUTOR • Jul 18, 2026
Backend-Entwicklung

argv argc einfach erklärt: Was sie bedeuten und wie du sie in der Praxis nutzt

AUTOR • Jul 18, 2026
Webdesign & UX

Excel wenn Farbe Wert: So prüfst du Zellfarben und gibst Werte gezielt aus

AUTOR • Jul 18, 2026
Webdesign & UX

Pagelayer Vs Elementor - Which WordPress Theme Should You Choose?

AUTOR • Jul 17, 2026
Backend-Entwicklung

How Does WordPress Multisite Work?

AUTOR • Jul 17, 2026
Webdesign & UX

WP Grid Builder Discount

AUTOR • Jul 17, 2026
Webdesign & UX

Outlook Symbol Übersicht: Alle wichtigen Symbole in Outlook schnell verstehen

AUTOR • Jul 17, 2026
DevOps & Deployment

Kein CI-Modul auf dem Fernseher: Bedeutung, Ursachen und die schnellsten Lösungen

AUTOR • Jul 17, 2026
Backend-Entwicklung

Die Kunst des Code Einfügens: Tipps und Tricks für Entwickler

AUTOR • Jul 17, 2026
Frontend-Entwicklung

Warum Android Internetseiten nicht öffnen: Lösungen und Tipps

AUTOR • Jul 16, 2026
Webdesign & UX

Excel Zeilen ausklappen: So blendest du Zeilen schnell ein und sparst Zeit

AUTOR • Jul 16, 2026
Webdesign & UX

Gelöschte Fotos Wiederherstellen: So Geht's!

AUTOR • Jul 16, 2026
DevOps & Deployment

Alles, was Sie über den Mozilla Wartungsdienst wissen müssen

AUTOR • Jul 16, 2026

Beliebte Beiträge

APIs & Microservices

Was ist eine MSI Datei und wie kann man sie verwenden?

AUTOR • Jul 16, 2025
Full-Stack

Der umfassende Leitfaden zum Thema Rahmenwerk: Was ist es und welche Bedeutung hat es?

AUTOR • Jul 15, 2025
Backend-Entwicklung

Perl: Eine vielseitige Programmiersprache für Entwickler

AUTOR • Jul 10, 2025
Datenbanken & ORM

SQL SELECT MAX: So nutzen Sie die Funktion richtig

AUTOR • Jul 03, 2025
Datenbanken & ORM

MongoDB vs. PostgreSQL: Geschwindigkeit im Vergleich

AUTOR • Jul 03, 2025
Webdesign & UX

Die besten Tools, um ein kostenloses Intro zu erstellen

AUTOR • Jun 30, 2025
DevOps & Deployment

Adobe Collaboration Synchronizer: Effiziente Teamarbeit neu definiert

AUTOR • Jun 29, 2025
Performance & SEO

Die perfekte Beschriftung in Word: Tipps und Tricks für professionelle Ergebnisse

AUTOR • Jun 26, 2025
Webdesign & UX

Datum und Uhrzeit automatisch einstellen nicht möglich? Ursachen und Lösungen

AUTOR • Jun 24, 2025
Webdesign & UX

Symbole auf dem Desktop anzeigen: So funktioniert's!

AUTOR • Jun 23, 2025
DevOps & Deployment

So installieren Sie eine Windows-Virtual Machine auf Ihrem Mac: Ein vollständiger Leitfaden

AUTOR • Jun 20, 2025
Webdesign & UX

Die Geheimnisse der effektiven Nutzung von Klammern in Microsoft Word

AUTOR • Jun 20, 2025
Performance & SEO

Verbundene Zellen in Excel trennen: So geht's Schritt für Schritt

AUTOR • Jun 18, 2025
Performance & SEO

Effiziente Nutzung der Ungleich-Formel in Excel: Ein Leitfaden für Einsteiger

AUTOR • Jun 18, 2025
DevOps & Deployment

Die optimale Datensicherung auf einer externen Festplatte – So geht’s!

AUTOR • Jun 17, 2025
Webdesign & UX

Autofill KeePass einrichten: So funktioniert automatisches Ausfüllen sicher und schnell

AUTOR • Jun 14, 2026
Webdesign & UX

Kreative Collagen leicht gemacht: So kannst du auf Android Collagen erstellen

AUTOR • Jun 13, 2025
Webdesign & UX

Desktop-Symbole: Ihr unverzichtbarer Guide für eine organisierte und effiziente Benutzeroberfläche

AUTOR • May 09, 2024
Webdesign & UX

Was tun, wenn dein Instagram-Account gesperrt ist?

AUTOR • Jul 29, 2025
Webdesign & UX

Der große Vergleich: Aluprofil Typen und ihre Unterschiede

AUTOR • Jul 27, 2025