View Full Version : SQL variable Spaltenbezeichnungen
roman.klinisch
06-04-20, 08:15
Hallo,
ich möchte die Spaltenbezeichnung einer Ausgabe variable, sprich zB. der Kalenderwoche definieren - gibt es hierfür einen Lösungsansatz ?
Vielen Dank!
LG Roman
Wofür brauchst Du das überhaupt. Kannst Du das etwas näher beschreiben.
Normalerweise sind Spalten-Namen (in Tabellen, Views, User Defined Table Functions) fix vorgegeben.
In einem SELECT-Statement kannst Du die Spalten benennen und so andere Spalten-Namen, bzw. Spalten-Namen bzw. Überschriften generieren.
M.E. kannst Du jedoch die Spalten-Namen nur mit Hilfe von dynamischem SQL dynamisch gestalten. Du klöppelst Dein SQL-Statement zur Laufzeit zusammen und integrierst die dynamischen Spalten-Namen.
Das gleiche gilt, wenn Du eine Arbeits-Tabelle generieren möchtest.
Birgitta
Vom Grundsatz kannst du in SQL entweder dynamisch (wie Birgitta bereits gesagt) oder auch statisch die Spaltennamen definieren:
select abc as "GroßKlein mit Leerzeichen", xyz as wirdimmergross
from mytable
Wichtig ist einfach, Groß-Kleinschreibung, Sonder- ind Leerzeichen in Anführungszeichen zu definieren.
Lädst du die Daten z.B. in Excel mit MS-Query (externe Daten) wird allerdings ein Feldname in Anführungszeichen auch mit denselben als Überschrift angezeigt.
Allerdings kann man die Eigenschaften der Abfrage bearbeiten und die Feldnamen als Überschrift ausblenden und eigene Überschriften in einer Zeile über dem Ergebnis definieren.
Bei höheren Programmiersprachen spielt der Feldnamen dann allerdings keine Rollen mehr.
roman.klinisch
06-04-20, 09:12
Hallo Brigitta,
ich erstelle hier eine Tabelle mit einer Wochenvorschau. Zwecks der besseren Lesbarkeit möchte ich die einzelnen Spalten nicht mit Woche1, Woche2, Woche3,.... sondern mit den entsprechenden Kalenderwochen benennen. DH. ich habe Werte ab Kalenderwoche X und X+1, X+2, X+3,....
Weiss nicht ob ich das jetzt Verständlich beschrieben habe...
LG Roman
Wie Birgitta schon sagte, du kannst dies dynamisch zusammen bauen.
MyStr = 'select f1 as "M' + x + '" ...';
exec sql prepare
exec sql open
Allerdings stellt sich die Frage, wo du das Ergebnis verwenden willst.
Per Programm mittels Fetch musst du ja sowieso benannte Hostvariablen angeben und da sind die Spaltennamen vollkommen egal. Da zählt nur die Reihenfolge der Felder in der Into-Klausel.
Willst du die Daten extern zur Verfügung stellen (ODBC, CSV, ...) kannst du ebenso einen
"create table newtable as (select .....) with data"
generieren.