PDA

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

B.Hauser
06-04-20, 08:43
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

Fuerchau
06-04-20, 08:57
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

Fuerchau
06-04-20, 13:19
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.