PDA

View Full Version : SQL Felderbenamsung



Seiten : [1] 2

KingofKning
17-06-13, 14:05
Hallo *all,

ich erstelle hier gerade eine View und möchte die Felder richtig benennen.

create view test/planz as SELECT
ALL T01.stmoan as "JahrMonat",
T01.stkto, T01.sttenr as "Kunden-Nr",

Wenn ich ein select mache, dann stimmen die Überschriften, allein die Feldnamen heißen dann z.B. Kunden00001 und das ist blöd.

Bekommt man den Feldnamen auch so genannt wie die Überschrift?

BTW. habe hier auch noch ein Rechenfeld
sum(case when stplis = 1 then STWT02 else 0 end) "Plan",
Das Summenfeld ist als 31,3 definiert bekommt man das auch kleiner definiert?

GG

B.Hauser
17-06-13, 14:32
Was Du vergibst ist keine Überschift, sondern der lange SQL Name.
Für alle Spalten-Namen länger als 10 Zeichen werden automatisch System-Namen bestehend aus den ersten 5 Zeichen des langen Namens und einem fortlaufenden Zähler gebildet.

Du kannst beim Erstellen der View sowohl einen langen SQL als auch einen kurzen (bis 10 Zeichen langen) System-Namen festlegen. Dazu ist jedoch eine Feld-Liste innerhalb der Create View Definition erfoderlich:


Create View MyView
(Langer_Feld_Name01 for SysName01,
Langer_Feld_Name02 for SysName02,
...)
as (Select * from ...)

Wenn Du Spalten mit Gänsefüßchen definierst, werden erhalten diese automatisch einen eigenen System-Namen auch dann wenn sie weniger als 10 Zeichen lang sind.
Außerdem musst Du daran denken, dass die Spalten mit Gänsefüßchen case sensitive sind und immer genau so angegeben werden müssen.

Überschriften werden mit dem Befehl LABEL ON COLUMN gesetzt.
1. Column Heading

Label on column ViewName
(SpaltenName1 is 'Überschrift 1',
SpaltenName2 is 'Überschrift 2'
...)

2. Text

Label On Column ViewName
(SpaltenName1 Text is 'Text 01',
SpaltenName2 Text is 'Text 02',
...)

Der Spalten-Name kann wahlweise durch den langen SQL oder den kurzen System-Namen ersetzt werden.

@2: Du kannst natürlich jedes Ausgabe-Feld in der View explizit auf den gewünschten Datentypen und Länge casten.

... Cast(Sum(.....) as Dec(11, 3))

Birgitta

KingofKning
17-06-13, 15:06
Danke,

werde ich morgen mal umsetzen.

GG

KingofKning
20-06-13, 10:34
Hallo Birgitta,
so ganz komme ich noch nicht klar damit.

Ich habe dieses Statement abgegeben:

create view gregor/x
("Monat" for x1, "Konto" for x2, "Kunde" for x3, "Firma" for x4)

as SELECT
ALL T01.stmoan as x1,
T01.stkto as x2,
T01.sttenr as x3,
'01' as x4
FROM x/sta01pf T01,
x/adr01pf t02
WHERE stFA = 1
and stfakt = 1
AND stmoan > 201300

Außer bei x4 läßt er überall die alten Überschriften.

Wo ist mein Denkfehler.

BTW OS = V5R4 (for ever?)

GG

B.Hauser
20-06-13, 10:54
Hallo Birgitta,
so ganz komme ich noch nicht klar damit.

Ich habe dieses Statement abgegeben:

create view gregor/x
("Monat" for x1, "Konto" for x2, "Kunde" for x3, "Firma" for x4)

as SELECT
ALL T01.stmoan as x1,
T01.stkto as x2,
T01.sttenr as x3,
'01' as x4
FROM x/sta01pf T01,
x/adr01pf t02
WHERE stFA = 1
and stfakt = 1
AND stmoan > 201300

Außer bei x4 läßt er überall die alten Überschriften.

Wo ist mein Denkfehler.

BTW OS = V5R4 (for ever?)

GG

Die Überschriften werden mit dem Befehl LABEL ON gesetzt. Ansonsten werden die Überschriften von dem Original-Feld übernommen.

Weder "Monat", noch "Konto", noch "Kunde", noch "Firma" sind Überschriften, sondern Feld/Spalten-Namen. Eine SQL beschriebene Tabelle kann Spalten mit einem SQL-Name "sss" oder länger als 10 Zeichen und einem kurzen System-Namen IBM i Namensregeln mit maximal 10 Zeichen haben.
Sofern ein Spalten-Name kürzer als 10 Zeichen ist und den System-Namens-Regeln der IBM i entspricht, sind SQL-Name und System-Name identisch.

... jedoch keiner von beiden ist eine "Überschrift", sondern wird nur statt dessen angezeigt.

Birgitta

KingofKning
20-06-13, 11:20
Danke,

das mit dem Label on hatte ich gemacht und funktioniert auch soweit, dachte ich hätte die berühmten 2 Fliegen mit einer Klappe schlagen können.

GG

malzusrex
20-06-13, 11:34
Danke,

das mit dem Label on hatte ich gemacht und funktioniert auch soweit, dachte ich hätte die berühmten 2 Fliegen mit einer Klappe schlagen können.

GG

waren das nicht 7 Fliegen auf einem Streich?

:D

Pikachu
20-06-13, 12:27
Das mit der 7 (Siegel) war das Buch. :D

camouflage
20-06-13, 12:57
OT
Nö: Die glorreichen 7 oder die 7 Laster... :D
/OT

Pikachu
20-06-13, 14:06
Die Stoßstange ist aller Laster Anfang. ;)


OT
Nö: Die glorreichen 7 oder die 7 Laster... :D
/OT