SQL für Berichterstellung und Analyse von File-Geodatabases

File-Geodatabases ermöglichen verbesserte Analyse- und Berichterstellungsfunktionen durch die Verwendung von Ausdrücken und Aliasnamen mithilfe der SubFields (Feldlisten)-Methode in einer Abfragedefinition. Außerdem werden ORDER BY und GROUP BY über die PostFixClause unterstützt. Bei GROUP BY können die Ausdrücke Zusammenfassungsfunktionen wie MIN, MAX und SUM enthalten.

Nachfolgend finden Sie eine Liste der Funktionen, die mit File-Geodatabases und Beispielen verwendet werden können.

ALIAS

Benennt eine Spalte um, sodass eine verständlichere Ausgabe entsteht.

SQL

SELECT NAME, POP1997 - POP1990 as PopChange
FROM counties ORDER BY NAME

ArcObjects

pQueryDef.SubFields = "NAME, POP1997 - POP1990 as PopChange"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY NAME"

CASE

Wertet eine Bedingungsliste aus und gibt einen von mehreren Ergebnisausdrücken zurück.

SQL

SELECT name,salary,
CASE
	WHEN salary <= 2000 THEN 'low'
	WHEN salary > 2000 AND salary <= 3000 THEN 'average'
	WHEN salary > 3000 THEN 'high'
	END AS salary_level
	FROM employees
	ORDER BY salary ASC

ArcObjects

pQueryDef.SubFields = "name,salary,
CASE
	WHEN salary <= 2000 THEN 'low'
	WHEN salary > 2000 AND salary <= 3000 THEN 'average'
	WHEN salary > 3000 THEN 'high'
	END AS salary_level"
	pQueryDef.Tables = " employees"
	pQueryDef.PostfixClause = " ORDER BY salary ASC "

COALESCE

Gibt den ersten Nicht-NULL-Feldwert der Argumente zurück.

SQL

SELECT Name, COALESCE(Business_Phone, Cell_Phone, Home_Phone)
Contact_Phone
FROM Contact_Info

ArcObjects

queryDef.SubFields = "Name, COALESCE(Business_Phone, Cell_Phone,
Home_Phone) Contact_Phone"
queryDef.Tables = "Contact_Info"

Contact_Info:

Name

Business_Phone

Cell_Phone

Home_Phone

Jeff

531-2531

622-7813

565-9901

Laura

NULL

772-5588

312-4088

Peter

NULL

NULL

594-7477

Ergebnis:

Name

Contact_Phone

Jeff

531-2531

Laura

772-5588

Peter

594-7477

EXPRESSIONS

SQL

SELECT SIN(sunangle)
FROM sightings

ArcObjects

queryDef.SubFields = "SIN(sunangle)"
queryDef.Tables = "sightings"

SET FUNCTIONS

OperatorBeschreibung

AVG

Berechnet den Durchschnitt aller Werte in der Gruppe. NULL-Werte werden ignoriert.

COUNT(*), COUNT(Ausdruck)

COUNT(*) gibt die Anzahl der Datensätze in einer Tabelle zurück. NULL-Werte werden berücksichtigt. COUNT(Ausdruck) gibt die Anzahl der Werte im angegebenen Ausdruck zurück. NULL-Werte werden ignoriert.

MAX

Sucht die Maximalwerte in der Gruppe. NULL-Werte werden ignoriert.

MIN

Sucht die Minimalwerte in der Gruppe. NULL-Werte werden ignoriert.

STDDEV, STDDEV_SAMP

Gibt die Stichprobenstandardabweichung des Ausdrucks zurück.

STDDEV_POP

Gibt die Populationsstandardabweichung des Ausdrucks zurück.

SUM

Sucht die Werte in der Gruppe. NULL-Werte werden ignoriert.

VAR, VAR_SAMP

Gibt die Stichprobenvarianz des Ausdrucks zurück.

VAR_POP

Gibt die Populationsvarianz des Ausdrucks zurück.

ARITHMETIC OPERATIORS

Arithmetische Operatoren werden zum Addieren, Subtrahieren, Multiplizieren und Dividieren von numerischen Werten verwendet.

OperatorBeschreibung

*

Arithmetischer Operator für die Multiplikation

/

Arithmetischer Operator für die Division

+

Arithmetischer Operator für die Addition

-

Arithmetischer Operator für die Subtraktion

FUNCTIONS

Im Folgenden finden Sie eine vollständige Liste der Funktionen, die von File-Geodatabases unterstützt werden.

Datumsfunktionen

FunktionBeschreibung

CURRENT_DATE

Das aktuelle Datum wird zurückgegeben.

EXTRACT (extract_field FROM extract_source)

Hiermit wird der extract_field-Teil von extract_source zurückgegeben. Beim Argument extract_source handelt es sich um einen Datums-/Uhrzeitausdruck. Beim Argument extract_field kann es sich um eines der folgenden Schlüsselwörter handeln: YEAR, MONTH, DAY, HOUR, MINUTE oder SECOND.

CURRENT TIME

Gibt die aktuelle Uhrzeit zurück.

CURRENT_TIMESTAMP

Gibt das aktuelle Datum und die aktuelle Zeit zurück.

Zeichenfolgefunktionen

Bei den Argumenten, die als string_exp aufgeführt sind, kann es sich um den Namen einer Spalte, ein Zeichenfolgenliteral oder das Ergebnis einer anderen Skalarfunktion handeln, in der der zugrunde liegende Datentyp als Zeichentyp dargestellt werden kann.

Bei Argumenten, die als character_exp aufgeführt sind, handelt es sich um Zeichenfolgen mit variabler Länge.

Bei Argumenten, die als start oder length aufgeführt sind, kann es sich um ein numerisches Literal oder das Ergebnis einer anderen Skalarfunktion handeln, wobei der zugrunde liegende Datentyp einen numerischen Typ darstellen kann.

Diese Zeichenfolge-Funktionen basieren auf 1, d. h. beim ersten Zeichen der Zeichenfolge handelt es sich um das Zeichen 1.

FunktionBeschreibung

CHAR_LENGTH(string_exp)

Gibt die Länge des String-Ausdrucks in Zeichen zurück.

CONCAT(string_exp1, string_exp2)

Gibt eine Zeichenfolge zurück, die sich aus der Verknüpfung von string_exp2 mit string_exp1 ergibt.

LOWER(string_exp)

Gibt einen String zurück, der mit string_exp identisch ist und in dem alle Großbuchstaben in Kleinbuchstaben konvertiert wurden.

POSITION(character_exp IN character_exp)

Gibt die Position des ersten Zeichenausdrucks im zweiten Zeichenausdruck zurück. Das Ergebnis ist eine genaue Zahl mit einer implementationsdefinierten Genauigkeit und dem Maßstab 0.

SUBSTRING (string_exp FROM start FOR length)

Gibt eine aus string_exp abgeleitete Zeichenfolge zurück. Diese Zeichenfolge beginnt an der durch start festgelegten Zeichenposition und weist eine Länge von length Zeichen auf.

TRIM(BOTH | LEADING | TRAILINGtrim_characterFROM string_exp)

Gibt string_exp zurück, wobei trim_character von den führenden, nachstehenden oder beiden Enden des Strings entfernt wurde.

UPPER(string_exp)

Gibt einen String zurück, der mit string_exp identisch ist und in dem alle Kleinbuchstaben in Großbuchstaben konvertiert wurden.

Numerische Funktionen

Bei allen Zahlenfunktionen wird ein numerischer Wert zurückgegeben.

Bei den Argumenten, die als numeric_exp, float_exp, oder integer_exp aufgeführt sind, kann es sich um einen Namen einer Spalte, das Ergebnis einer anderen Skalarfunktion oder ein "numeric-literal" handeln, wobei der zugrunde liegende Datentyp als numerischer Typ dargestellt werden kann.

FunktionBeschreibung

ABS(numeric_exp)

Gibt den absoluten Wert von numeric_exp zurück.

ACOS(float_exp)

Gibt den Arkuskosinus von float_exp als Winkel, ausgedrückt in Radianten, zurück.

ASIN(float_exp)

Gibt den Arkussinus von float_exp als Winkel, ausgedrückt in Radianten, zurück.

ATAN(float_exp)

Gibt den Arkustangens von float_exp als Winkel, ausgedrückt in Radianten, zurück.

CEILING(numeric_exp)

Gibt den kleinsten ganzzahligen Wert, der größer als oder gleich numeric_exp ist, zurück.

COS(float_exp)

Gibt den Kosinus von float_exp zurück, wobei float_exp ein in Radianten ausgedrückter Winkel ist.

FLOOR(numeric_exp)

Gibt den größten ganzzahligen Wert, der kleiner als oder gleich numeric_exp ist, zurück.

LOG(float_exp)

Gibt den natürlichen Logarithmus von float_exp zurück.

LOG10(float_exp)

Gibt den Logarithmus zur Basis 10 von float_exp zurück.

MOD(integer_exp1, integer_exp2)

Gibt den Rest von integer_exp1 dividiert durch integer_exp2 zurück.

POWER(numeric_exp, integer_exp)

Gibt den Wert von numeric_exp potenziert mit integer_exp zurück.

ROUND(numeric_exp, integer_exp)

Gibt numeric_exp auf integer_exp Stellen rechts neben dem Dezimaltrennzeichen aufgerundet zurück. Wenn integer_exp negativ ist, wird numeric_exp auf |integer_exp| Stellen links neben dem Dezimaltrennzeichen aufgerundet.

SIGN(numeric_exp)

Gibt einen Indikator des Vorzeichens von numeric_exp zurück. Wenn numeric_exp kleiner als Null ist, wird "-1" zurückgegeben. Wenn numeric_exp gleich Null ist, wird 0 zurückgegeben. Wenn numeric_exp größer als Null ist, wird "1" zurückgegeben.

SIN(float_exp)

Gibt den Sinus von float_exp zurück, wobei float_exp ein in Radianten ausgedrückter Winkel ist.

TAN(float_exp)

Gibt den Tangens von float_exp zurück, wobei float_exp ein in Radianten ausgedrückter Winkel ist.

TRUNCATE(numeric_exp, integer_exp)

Gibt numeric_exp auf integer_exp Stellen rechts neben dem Dezimaltrennzeichen verkürzt zurück. Wenn integer_exp negativ ist, wird numeric_exp auf |integer_exp| Stellen links neben dem Dezimaltrennzeichen verkürzt.

GROUP BY

Wird zum Sammeln von Daten aus mehreren Datensätzen und Gruppieren der Ergebnisse nach einer oder mehreren Spalten verwendet.

SQL

SELECT STATE_NAME, SUM(POP1990) as TotalPopulation
FROM counties
GROUP BY STATE_NAME ORDER BY STATE_NAME

ArcObjects

pQueryDef.SubFields = "STATE_NAME, SUM(POP1990) as
TotalPopulation"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "GROUP BY STATE_NAME ORDER BY
STATE_NAME"

HAVING

Eine WHERE-Klausel für GROUP BY.

SQL

SELECT department, MAX(salary) as Highest_salary
FROM employees
GROUP BY department HAVING MAX(salary) < 50000

ArcObjects

queryDef.SubFields = "department, MAX(salary) as Highest_salary"
queryDef.Tables = "employees"
pQueryDef.PostfixClause = "GROUP BY department HAVING MAX(salary)
< 50000"

JOINS

Kombiniert die Datensätze aus zwei oder mehr Tabellen.

Cross Join

SQL

SELECT Table1.name, Table1.Address, Table2.name, Table2.Salary
FROM Table1 CROSS JOIN Table2

ArcObjects

queryDef.SubFields = "Table1.name, Table1.Address, Table2.name,
Table2.Salary"
queryDef.Tables = "Table1 CROSS JOIN Table2"

Inner Join

SQL

SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
INNER JOIN Table2 ON Table1.C1 = Table2.C3

ArcObjects

queryDef.SubFields = "Table1.C1, Table1.C2, Table2.C3,
Table2.C4"
queryDef.Tables = "Table1 INNER JOIN Table2 ON Table1.C1 =
Table2.C3"

Left Outer Join

SQL

SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
LEFT OUTER JOIN Table2 ON Table1.C1 = Table2.C3

ArcObjects

queryDef.SubFields = "Table1.C1, Table1.C2, Table2.C3,
Table2.C4"
queryDef.Tables = "Table1 LEFT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3"

Right Outer Join

SQL

SELECT * FROM Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3

ArcObjects

queryDef.SubFields = "*"
queryDef.Tables = "Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3"

NULLIF

NULLIF gibt NULL zurück, wenn die beiden angegebenen Parameter gleich sind, andernfalls wird der Wert des ersten Parameters zurückgegeben.

SQL

SELECT Location, NULLIF(Sales, Forecast) as Results FROM
StoreSales

ArcObjects

queryDef.SubFields = " Location, NULLIF(Sales, Forecast) as
Results"
queryDef.Tables = "StoreSales"

StoreSales:

StandortSales (Umsätze)Forecast (Prognose)

Redlands

39000

55000

Palm Springs

60000

61000

Riverside

40000

40000

Ergebnis:

StandortErgebnisse

Redlands

39000

Palm Springs

60000

Riverside

NULL

ORDER BY

Gibt die Sortierreihenfolge an. Dabei sind eine aufsteigende (ASC) oder absteigende (DESC) Reihenfolge und verschiedene Sortieroptionen möglich. Zu den Sortiertypen zählen BINARY(BIN), CASESENSITIVE(CASE) und NOCASESENSITIVE(NOCASE). Bei der BINARY-Sortierung werden sowohl die Groß- und Kleinschreibung als auch Zeichen mit Akzenten berücksichtigt. Bei CASESENSITIVE wird zwischen Groß- und Kleinschreibung unterschieden. Bei NOCASESENSITIVE wird nicht zwischen Groß- und Kleinschreibung unterschieden.

SQL

SELECT STATE_NAME, POP1990
FROM counties ORDER BY STATE_NAME

ArcObjects

pQueryDef.SubFields = "STATE_NAME, POP1990"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY STATE_NAME"

SQL

SELECT STATE_NAME, POP1990
FROM counties ORDER BY STATE_NAME COLLATE BINARY ASC

ArcObjects

pQueryDef.SubFields = "STATE_NAME, POP1990"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY STATE_NAME COLLATE BINARY
ASC"