PDA

View Full Version : SQL und V7.R3



loeweadolf
08-12-18, 21:50
Hi, Problem mit SQL nach Systemumstellung bei einem Mandanten von V7.R1 nach V7.R3 und gleichzeitig Umstellung auf Power-9.

Ein CL ruft ein SQL-Script auf:


/* mit SQL aus LAGBESpf und BOLVGLpf die Arbeitsdatei BOLDIFpf +
auffüllen */
RUNSQLSTM SRCFILE(ANCRASRC/QSQLSRC) SRCMBR(PR_LAG350) +
COMMIT(*NONE) NAMING(*SYS) DATFMT(*EUR) +
DATSEP('.') TIMSEP(':') DBGVIEW(*STMT)


FTP-Script
-- P R _ L A G 3 5 0
--
-- aus LAGBESpf und BOLVGLpf eine Vergleichsdatei erstellen
-- --> BOLDIFpf


insert into BOLDIFpf
( bdstkn ,
bdidenti ,
bdnmen ,
bdbopale ,
bdarti ,
bdvere ,
bddess ,
bdgrsc ,
bdfarb ,
bdfar2 ,
bdidentib ,
bdmeter ,
bddatum )
select
lag.lastkn ,
lag.lavgre12 ,
lag.lanmen ,
lag.labopale ,
substring(lag.laarti, 1, 6) as quali,
lag.lavere ,
lag.ladess ,
lag.lagrsc ,
lag.lafarb ,
lag.lafar2 ,
value(bol.bvidenti, 0) ,
value(bol.bvmeter, 0,00) ,
value(bol.bvdatum, '0001-01-01' )
from lagbespf as LAG
LEFT OUTER JOIN bolvglpf as BOL ON
LAG.LASTKN = BOL.bvstkn
where lag.lafirm = 01
and lag.lalort = 810
and lag.lapros = 82 ;

insert into BOLDIFpf
( bdstkn ,
bdidenti ,
bdnmen ,
bdbopale ,
bdarti ,
bdvere ,
bddess ,
bdgrsc ,
bdfarb ,
bdfar2 ,
bdidentib ,
bdmeter ,
bddatum )
select
bol.bvstkn ,
value(lag.lavgre12, 0) ,
value(lag.lanmen, 0,00) ,
value(lag.labopale, 0) ,
value(substring(lag.laarti, 1, 6), ' ') ,
value(lag.lavere, ' ') ,
value(lag.ladess, 0) ,
value(lag.lagrsc, ' ') ,
value(lag.lafarb,' ') ,
value(lag.lafar2, ' ') ,
bol.bvidenti ,
bol.bvmeter ,
bol.bvdatum
from lagbesMH as LAG
RIGHT EXCEPTION JOIN bolvglpf as BOL ON
LAG.LASTKN = BOL.bvstkn ;


Es kommt immer eine Fehlermeldung.

SQL0104 Pos. 22 Token . ungültig. Gültige Token: + - AS
<identifier>.


21 select
22 lag.lastkn ,
23 lag.lavgre12 , etc.


Ich habe schon alles Moegliche versucht. Alle Felder mit Datei-Namen als Praefix. und und und ..
Im CL habe ich auch mal anstatt Naming (*SYS) Naming (*SQL) versucht.

Vielleicht kann mir jemand helfen. Wenn nicht, dann werde ich ein RPG-Progamm erstellen mit denselben Funktionen wie das SQL-Script.


</identifier>

andreaspr@aon.at
09-12-18, 06:06
Guten Morgen Ludger,

das wird sicher daran liegen, dass ab 7.3 LAG eine SQL Funktion ist, mit der man den Wert einer Spalte aus dem aktuellen Satz mit dem des vorherigen Satzes vergleichen kann:

Klassisches Beispiel wäre, wenn ich wissen will, um wieviel sich das aktuelle Gehalt mit dem des Vormonats verändert hat:


Select name, month, salary,
Salary -
Lag(salary, 1 , 0) Over (Order By month)
From prouzalib.employee


lg Andreas

loeweadolf
09-12-18, 12:38
oh, guter Hinweis. Werde ich mal testen. Vielen Dank.

loeweadolf
09-12-18, 15:15
Danke Andreas, ich habe alle LAG in LAX geändert, und schon hat es wieder funktioniert.

LG. Ludger