PDA

View Full Version : SUBSTR(Feld,1,1) as .... Wie geht der "richtig"?



AndreasH
29-04-04, 15:22
Hallo Forum,
ich habe eine Tabele mit Spalten A1KDNR und A1NWSU (unter anderem)
Die SQL Abfrage mache ich mit Prepare


/free
SqlStmt = '+
Select SUBSTR(A1KDNR, 1, 1) as Grp, +
sum (A1NWSU), +
FROM afa100 +
WHERE A1RGDT = ? +
GROUP By A1RGDT, Grp';
/end-free
Beim Open kommt dann die Fehlermeldung
[code]
Nachrichten-ID . . . . : SQL0206 Bewertung . . . . . . : 30
Nachrichtenart . . . . : Diagnose
Sendedatum . . . . . . : 29.04.04 Sendezeit . . . . . . : 15:18:31

Nachricht . . . : Spalte GRP nicht in angegebenen Tabellen.
Ursache. . . . . : GRP ist keine Spalte von Tabelle *N in Bibliothek *N. Ist
die Tabelle *N, ist GRP keine Spalte einer Tabelle oder Sicht, auf die
verwiesen werden kann.
Fehlerbeseitigung: Einen der folgenden Schritte durchführen und die
Anforderung wiederholen:
-- Sicherstellen, dass die Spalten- und Tabellennamen in der Anweisung
korrekt angegeben wurden.
-- Handelt es sich um eine Anweisung SELECT, sicherstellen, dass alle
erforderlichen Tabellen in der Klausel FROM angegeben wurden.
-- Sollte die Spalte ein Korrelationsbezug sein, die Spalte mit der
korrekten Tabellenkennzeichnung qualifizieren.

Wie "definiere" ich denn eine neue Ergebnisspalte für einen Gruppenwechel?
Danke für alle Antworten!

Fuerchau
29-04-04, 15:26
In der Gruppenspalte muss die Funktion wiederholt werden, also

GROUP By A1RGDT, SUBSTR(A1KDNR, 1, 1)

Erklärung:
Das neue Feld "Grp" wird erst bei der Erstellung des Ergebnisses generiert.
Die Gruppierung kann aber nur auf den Originalfeldern passieren.

AndreasH
29-04-04, 15:30
Aua, das ist so einfach, dass ich mich beissen könnte...


/free
SqlStmt = '+
Select SUBSTR(A1KDNR, 1, 1) as Grp, +
sum (A1NWSU), +
FROM afa100 +
WHERE A1RGDT = ? +
GROUP By A1RGDT, SUBSTR(A1KDNR, 1, 1)';
/end-free

funktioniert einwandfrei...
Sorry für die überflüssige Frage

AndreasH
29-04-04, 15:30
Danke Herr Fuerchau :-)