SQL-Statements bilden den Kern eines Berichts. Sie steuern die Abfrage der gewünschten Daten. Diese Seite liefert einen kurzen Überblick über die Zusammensetzung eines SQL-Statements und über Dinge, die bei der Erstellung eines SQL-Statements beachtet werden müssen.
SELECT-Statement
Das SELECT-Statement definiert, welche Daten, d. h. welche Tabellenspalten, aus welchen Datenbanktabellen abgefragt werden. Die abgefragten Tabellenspalten bilden später die einzelnen Spalten des Berichtergebnisses. Ein Statement, das die ID und die Produktnummer aus der Datenbanktabelle „Article“ abfragt, würde wie folgt aussehen:
SELECT art.id, art.productno FROM #SCHEMA#.Article art
Für das SELECT-Statement ist folgendes zu beachten:
- Der erste Wert der Selektion muss immer die Produkt-/Artikel-ID sein (im obigen Beispiel „id“). Dies ist für die Verlinkung der Produkte im Berichtergebnis erforderlich.
- Am Ende eines SQL-Statements darf kein Semikolon stehen.
- Um den korrekten Zugriff auf die Datenbanktabellen zu gewährleisten, ist es ratsam, vor jeder im SQL-Statement aufgeführten Tabelle den Platzhalter #SCHEMA# zu verwenden (z. B. #SCHEMA#.Article art). Der Platzhalter wird bei der Berichtausführung mit einem festgelegten Wert ersetzt, welcher über eine entsprechende Property definiert ist.
- Die Spaltennamen der abgefragten Datenbankspalten müssen durch Kommas separiert werden.
WHERE-Klausel
Definition
Über die WHERE-Klausel werden die Parameter (d. h. Bedingungen) der Abfrage definiert, um das Berichtergebnis anhand der definierten Parameter einzugrenzen. Ein SQL-Statement mit einer simplen WHERE-Klausel, das aus der Datenbanktabelle „Article“ alle Produktnummern abfragt, die mit der Ziffernfolge „10013“ beginnen, könnte zum Beispiel so aussehen:
SELECT art.id, art.productno FROM #SCHEMA#.Article art WHERE productno like ′10013%′
Parameter
In Bezug auf Parameter ist folgendes zu beachten:
- Gemäß JQL-Spezifikation müssen Parameter in der Abfrage mit ?1, ?2, ?3 … ?N angegeben werden
- Parameter, bei denen eine Mehrfachauswahl möglich ist, müssen in der Abfrage in einer IN-Klausel verarbeitet werden. Die Mehrfachauswahl wird vom System als ID-Liste an die Abfrage übergeben wird (Attribute, AttributeValue, PurchaseCategory).
- Typen werden über die Typ-ID eingegrenzt (z. B. „Type=52“).
- Attributwerte werden über das Attribut eingegrenzt (z. B. „AttributeValue=Color“).
- Optionale Parameter werden als Werte-Schlüssel-Paar in der Form „<Parameterindex>#=#<Parametertyp>“ abgefragt. Der Parameterindex entspricht dabei dem Index des Parameters innerhalb des Statements. Der Parametertyp entspricht einem der für Berichte möglichen Datentypen.
- Standardwerte für optionale Parameter lassen sich im Bereich „Systemparameter“ festlegen (report.parameter).

- Standardparameter zur initialen Vorbelegung der Berichtparameter werden als Werte-Schlüssel-Paar in der Form „<Parameterindex>#=#<Parameterwert>“ abgefragt. Der Parameterindex entspricht dabei dem Index des Parameters innerhalb des Statements. Der Parameterwert entspricht dem gewünschten Standardwert für die erste Ausführung.
- Listenparameter werden über eine Abfrage mit dem Zusatz „#LIST_PARAM#“ abgefragt (z. B. #LIST_PARAM#nar.node.id in (?1)#LIST_PARAM#).
- Die Abfrage von Listenparametern ist auf Listen mit maximal 1000 Einträgen begrenzt. Pro SQL-Statement kann jedoch nur eine Abfrage mit dem Zusatz „#LIST_PARAM#“ verwendet werden. Um Listen mit mehr als 1000 Einträgen abzufragen, müssen Sie eine Abfrage verwenden, die den Operator OR und IN-Klauseln miteinander kombiniert (z. B. nar.node.id IN (id1..id1000) OR nar.node.id IN (id1001..id2000) OR nar.node.id IN (id2001..id3000)).