SQL-Variablen

Fügen Sie interaktive Parameter zu Ihren SQL-Abfragen hinzu, die in Auswertungen getestet und als Filter in Berichten verwendet werden können.

Denken Sie an Lücken in einem Serienbrief - Sie schreiben den Brief einmal mit Platzhaltern für "Name" und "Abteilung", dann können Sie jedes Mal, wenn Sie ihn verwenden, verschiedene Werte einsetzen. SQL-Variablen ermöglichen es Ihnen, eine Abfrage zu schreiben, die verschiedene Ergebnisse basierend auf den Werten zeigt, die Sie bereitstellen.

Was SQL-Variablen sind

SQL-Variablen sind Platzhalter in Ihren SQL-Abfragen, die es Ihnen ermöglichen:

  • Flexible Abfragen zu erstellen - Einmal schreiben, mit verschiedenen Werten verwenden

  • Verschiedene Szenarien zu testen - Verschiedene Werte ausprobieren, ohne SQL umzuschreiben

  • Dynamische Berichte zu erstellen - Dieselbe Abfrage zeigt verschiedene Daten basierend auf der Benutzerauswahl

  • Mit Berichtsfiltern zu verbinden - Variablen werden zu benutzerfreundlichen Filtern in Berichten

Beispiel aus der Praxis: Anstatt separate Abfragen für jede Abteilung zu schreiben, schreiben Sie eine Abfrage mit $abteilung und testen sie dann mit "Öffentliche Sicherheit", "Gesundheitsdienste" oder jedem anderen Abteilungsnamen.

Variablen-Syntax

Variablen verwenden eine einfache Dollar-Zeichen-Syntax in Ihren SQL-Abfragen.

SELECT abteilung, status, budget, erstellungsdatum
FROM projekte 
WHERE abteilung = $abteilungsfilter
  AND status = $projektstatus
  AND budget >= $mindestbudget
  AND erstellungsdatum >= $startdatum

Hinweis: Derzeit können Variablen nur in WHERE-Klauseln verwendet werden.

Regeln für Variablennamen:

  • Muss mit Buchstabe oder Unterstrich beginnen: $abteilung ✅, $_filter

  • Kann Buchstaben, Zahlen, Unterstriche enthalten: $region_2024 ✅, $statusfilter

  • Kann nicht mit Zahlen beginnen: $2024_daten

  • Kann keine Leerzeichen oder Sonderzeichen enthalten: $mein-filter ❌, $mein filter

Aktuelle Einschränkungen:

  • Nur WHERE-Klausel: Variablen können nur in WHERE-Bedingungen verwendet werden

  • Keine Spaltennamen: Variablen können nicht für SELECT-Spalten wie SELECT $spaltenname FROM tabelle verwendet werden

  • Kein GROUP BY/ORDER BY: Variablen können nicht in GROUP BY $gruppenfeld oder ORDER BY $sortierfeld verwendet werden

Für vollständige technische Details siehe DuckDBs Dokumentation zu benannten Parametern.

Verwenden Sie beschreibende Namen wie $abteilungsfilter oder $startdatum anstatt generische Namen wie $var1 oder $x. Dies macht Ihre Abfragen später leichter verständlich.

Wie Variablen in der Benutzeroberfläche funktionieren

Wenn Sie eine SQL-Abfrage mit Variablen schreiben, erkennt das System sie automatisch und erstellt interaktive Steuerelemente über der Tabellenvorschau oder Diagrammvorschau auf der linken Seite der Benutzeroberfläche.

Variablen steuern

Jede Variable bekommt ihre eigene kleine Steuerung, in der Ihnen folgende Funktionen zur Verfügung stehen:

1

Mit verschiedenen Variablentypen testen

Sie können Ihre Variablen mit verschiedenen Datentypen testen:

  • Text - Für Namen, Kategorien, Beschreibungen

  • Zahl - Für Beträge, Anzahlen, IDs

  • Datum - Für zeitbasierte Filterung (YYYY-MM-DD-Format)

Die Benutzeroberfläche ermöglicht es Ihnen zu testen, wie sich Ihre Abfrage mit verschiedenen Arten von Werten verhält.

2

Einzelne oder mehrere Werte wählen

Einzelwert-Modus:

  • Geben Sie einen Wert ein, der die Variable ersetzt

  • Beispiel: $abteilung wird zu "Öffentliche Sicherheit"

Mehrwert-Modus:

  • Geben Sie mehrere Werte getrennt durch Semikolons ein

  • Beispiel: $statusliste wird zu "Aktiv; Ausstehend; Überprüfung"

  • Verwenden Sie mit IN-Klausel: WHERE status IN ($statusliste)

3

Ihre Testwerte eingeben

Für Textwerte:

  • Direkt tippen: Öffentliche Sicherheit

  • Mehrere Werte: Aktiv; Ausstehend; Abgeschlossen

  • Semikolons wörtlich einschließen: Text mit \; Semikolon

Für Zahlen:

  • Einzeln: 1000

  • Mehrere: 100; 500; 1000

Für Daten:

  • Immer YYYY-MM-DD-Format verwenden: 2024-01-15

  • Nur einzelnes Datum (keine mehreren Datumswerte)

4

Ihre Abfrage testen

Klicken Sie "Anwenden" auf der Variablen-Pill, um mit diesen Werten zu testen, dann führen Sie Ihre Abfrage aus, um die Ergebnisse zu sehen.

Häufige Variablenmuster

Einzelwert-Filterung

SELECT abteilung, COUNT(*) as mitarbeiteranzahl
FROM mitarbeiter 
WHERE abteilung = $abteilung
GROUP BY abteilung
ORDER BY mitarbeiteranzahl DESC

Variablen-Setup:

  • Name: abteilung

  • Testen mit: Textwerten wie Öffentliche Sicherheit

  • Modus: Einzelwert

Mehrwert-Filterung

SELECT * 
FROM projekte
WHERE status IN $statusliste
  AND prioritaet IN $prioritaetsliste
ORDER BY erstellungsdatum DESC

Variablen-Setup:

  • Name: statusliste

  • Testen mit: Mehreren Textwerten wie Aktiv; Überprüfung; Planung

  • Modus: Mehrere Werte

Datumsbereichs-Filterung

SELECT * 
FROM budgetposten
WHERE erstellungsdatum >= $startdatum 
  AND erstellungsdatum <= $enddatum
  AND betrag >= $mindestbetrag
ORDER BY erstellungsdatum

Variablen-Setup:

  • startdatum: Testen mit Datumswerten wie 2024-01-01

  • enddatum: Testen mit Datumswerten wie 2024-12-31

  • mindestbetrag: Testen mit Zahlenwerten wie 1000

Umgang mit leeren Variablen

Wenn kein Filter angewendet werden soll, verwenden Sie dieses Muster, um alle Daten zu zeigen:

SELECT * 
FROM projekte
WHERE (abteilung = $abteilung OR $abteilung IS NULL)
  AND (status IN $statusliste OR $statusliste IS NULL)

Dies gewährleistet:

  • Wenn Sie $abteilung auf "Öffentliche Sicherheit" setzen, zeigen nur diese Projekte

  • Wenn Sie $abteilung leer lassen, zeigen ALLE Abteilungen

  • Dieselbe Logik funktioniert für die Statusliste

Variablen in Auswertungen testen

Variablen sind perfekt zum Testen verschiedener Szenarien beim Erstellen von Auswertungen:

Entwicklungsworkflow

1

Schreiben Sie Ihre Basis-Abfrage

Beginnen Sie mit einer Abfrage, die ohne Variablen funktioniert:

SELECT abteilung, AVG(budget) as durchschnittsbudget
FROM projekte 
WHERE status = 'Aktiv'
GROUP BY abteilung
2

Fügen Sie Variablen für Flexibilität hinzu

Ersetzen Sie feste Werte durch Variablen:

SELECT abteilung, AVG(budget) as durchschnittsbudget
FROM projekte 
WHERE (status IN $statusfilter OR $statusfilter IS NULL)
  AND (abteilung = $abteilungsfilter OR $abteilungsfilter IS NULL)
GROUP BY abteilung
3

Verschiedene Szenarien testen

Verwenden Sie die Variablen-Pills zum Testen:

  • Alle aktiven Projekte: statusfilter = Aktiv

  • Aktiv und ausstehend: statusfilter = Aktiv; Ausstehend

  • Spezifische Abteilung: abteilungsfilter = Gesundheitsdienste

  • Alle Abteilungen: abteilungsfilter leer lassen

4

Verifizieren Sie, dass Ergebnisse Sinn machen

Überprüfen Sie, dass Ihre Abfrage erwartete Ergebnisse für jeden Testfall zurückgibt, bevor Sie sie in Berichten verwenden.

Von Variablen in Auswertungen zu Berichtsfiltern

Die wahre Macht von Variablen zeigt sich, wenn Sie Auswertungen mit Variablen in Berichten verwenden:

Die Verbindung

  1. In Auswertungen: Variablen ermöglichen es Ihnen, verschiedene Abfrageparameter zu testen

  2. In Berichten: Dieselben Variablen können zu benutzerfreundlichen Filtern werden

  3. Für Endnutzer des Berichts: Sie sehen Menüs und Datumsauswähler, nicht rohen SQL-Code

Beispiel-Transformation

Ihre SQL-Auswertung mit Variablen:

SELECT abteilung, COUNT(*) as projektanzahl
FROM projekte
WHERE (status IN $projektstatus OR $projektstatus IS NULL)
  AND (erstellungsdatum >= $startdatum OR $startdatum IS NULL)

Wird zu diesem für Berichtsbenutzer:

  • Projektstatus-Filter mit Auswahl: "Aktiv", "Ausstehend", "Abgeschlossen"

  • Startdatum-Filter für die Auswahl des frühesten einzuschließenden Datums

Warum das wichtig ist

  • Entwickler arbeiten mit flexiblen SQL-Abfragen mit Variablen

  • Berichts-Ersteller verbinden Variablen mit benutzerfreundlichen Filter-Benutzeroberflächen

  • Endnutzer bekommen intuitive Steuerelemente, ohne SQL-Code zu sehen oder zu bearbeiten

Für vollständige Details zur Verbindung von Variablen mit Berichtsfiltern siehe Berichtsfilter.

Tipps

Variablennamen

  • Seien Sie beschreibend: $abteilungsfilter nicht $a

  • Seien Sie konsistent: Wenn Sie das _filter-Suffix verwenden, verwenden Sie es überall

  • Passen Sie zu Ihren Daten: Verwenden Sie Namen, die zu Ihren Spaltennamen passen, wenn möglich

Abfrage-Design

  • Behandeln Sie Nulls ordnungsgemäß: Schließen Sie immer OR $variable IS NULL für optionale Filter ein

  • Testen Sie gründlich: Probieren Sie leere Werte, Einzelwerte und mehrere Werte

  • Verwenden Sie angemessene SQL-Klauseln: = für Einzelwerte, IN für Listen

Variablentypen

  • Text: Für Kategorien, Namen, Beschreibungen

  • Zahl: Für Beträge, Anzahlen, IDs

  • Datum: Nur für Datumswerte, immer YYYY-MM-DD-Format

Test-Ablauf

  1. Beginnen Sie einfach: Testen Sie zuerst mit Einzelwerten

  2. Fügen Sie Komplexität hinzu: Probieren Sie mehrere Werte und Kombinationen

  3. Testen Sie Grenzfälle: Leere Werte, alle Werte, keine Treffer

  4. Verifizieren Sie Logik: Stellen Sie sicher, dass NULL-Behandlung korrekt funktioniert

Häufige Problembehandlung

Variable nicht erkannt

Problem: Sie haben $abteilung getippt, aber sehen keine Variable wird erkannt

Lösung: Überprüfen Sie die Rechtschreibung und stellen Sie sicher, dass der Variablenname den Namensregeln folgt

Abfrage schlägt mit Variablen fehl

Problem: Abfrage funktioniert ohne Variablen, aber schlägt fehl, wenn Sie sie hinzufügen

Lösung: Überprüfen Sie Ihre NULL-Behandlung - fügen Sie OR $variable IS NULL-Bedingungen hinzu

Falscher Datentyp

Problem: Ihre Datumsvariable zeigt Textwerte oder Zahlen werden als Text angezeigt

Lösung: Testen Sie mit dem korrekten Datentyp in der Variablen-Benutzeroberfläche - probieren Sie Datumsformat YYYY-MM-DD für Daten

Mehrere Werte funktionieren nicht

Problem: Mehrere Werte in einer Variable filtern nicht korrekt

Lösung: Stellen Sie sicher, dass Sie IN ($variable) und nicht = $variable für Listen verwenden

Erweiterte Muster

Komplexe Filterung

SELECT * 
FROM projekte
WHERE 
  -- Datumsbereichs-Filterung
  (erstellungsdatum BETWEEN $startdatum AND $enddatum 
   OR ($startdatum IS NULL AND $enddatum IS NULL))
  
  -- Multi-Kriterien-Filterung  
  AND (
    (abteilung IN $abteilungsliste OR $abteilungsliste IS NULL)
    AND (status IN $statusliste OR $statusliste IS NULL)
    AND (budget >= $mindestbudget OR $mindestbudget IS NULL)
  )

Denken Sie daran: Variablen können nur in WHERE-Klauseln verwendet werden. Komplexe Logik mit CASE-Anweisungen, dynamische Spaltenauswahl oder variable GROUP BY/ORDER BY-Klauseln werden derzeit nicht unterstützt.

Bereit, Variablen in Berichten zu verwenden? Erfahren Sie, wie Sie Ihre SQL-Auswertungen mit benutzerfreundlichen Berichtsfiltern in der Berichtsfilter-Dokumentation verbinden.

Zuletzt aktualisiert

War das hilfreich?