Spalten benennen, die keinen bekannten Namen haben


Normalerweise vergibt man Spaltennamen mit den entsprechenden create-Anweisungen und verwendet falls nötig einen Alias im select. Zum vergeben eines Aliases muss man aber den ursprünglichen Spaltennamen kennen. Das ist zum Beispiel bei der Verwendung von Tabellenfunktionen, unnest und values der nicht Fall. Der einzige Weg diesen Spalten Namen zu geben ist auf Basis ihrer Position.

Option 1: Namen in der from-Klausel zuweisen

Neben Aliasnamen für Tabellen kann fortgeschrittenes SQL-92 in der from-Klausel auch Spaltennamen zuweisen:

SELECT COUNT(c1)
     , COUNT(*)
  FROM (VALUES (1)
             , (NULL)
       ) t1(c1)

Die Spaltennamen, die von values geliefert werden, hängen von der Implementierung ab0. Damit kann man keine portable SQL-Anweisung schreiben. Daher vergibt das Beispiel in der from-Klausel einen Alias für die Tabelle und Ihre Spalte. Diese Namen können dann wie gewohnt benutzt werden, ohne die Portabilität einzuschränken.

Option 2: Mit Common-Table-Expressions (with)

Seit SQL:1999 kann auch die with-Klausel genutzt werden, um Spalten anhand Ihrer Position zu benennen – also ohne dass man den ursprünglichen Namen kennt:

WITH t1 (c1) AS (
     VALUES (1)
          , (NULL)
)
SELECT COUNT(c1)
     , COUNT(*)
  FROM t1

Kompatibilität

Obwohl die Vergabe von Spaltenaliassen in der from-Klausel bereits seit SQL-92 möglich ist und mit SQL:1999 verpflichtend wurde, wird with besser unterstützt:

Über den Autor

Foto von Markus Winand

Markus Winand lehrt effizientes SQL – inhouse und online. Er minimiert die Entwicklungszeit durch modernes SQL und optimiert die Laufzeit durch schlaue Indizierung – dazu hat er auch das Buch SQL Performance Explained veröffentlicht.

Sein Buch bei Amazon kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Bei Amazon kaufen
(Taschenbuch)

Taschenbuch und PDF auch auf Markus' Webseite erhältlich.

Holen Sie sich Markus

…für ein Training ins Büro.

Sein beliebtes Training stimmt Entwickler auf SQL Performance ein.

Erfahren Sie mehr»

Fußnoten

0

SQL:2016-2, §7.3, Syntax Rule 4, letzter Satz.

„modern SQL“ von Markus Winand ist unter einer Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License lizenziert.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz | CC-BY-NC-ND 3.0 Lizenz