OLDKDN ist in diesem Fall Numerisch.
ich habe mir eine Datei erstellt, wo in den Sourcen die Kundennummer vorkommt.
Manchmal kommt Sie Numerisch, manchmal auch Alpha.
Die Längen variieren auch zwischen 5, 0 bis 13, 0 und das selbe im Alpha-bereich.
Datei:
Im Programm stopple ich folgendes Sqlstatement zusammen:Code:Feld Datei Art Länge "SOURCE" KNDRSLT CHARACTER 20 TEILDATEI KNDRSLT CHARACTER 10 TEXT KNDRSLT CHARACTER 50 FELDNAME KNDRSLT CHARACTER 10 FELDLAENGE KNDRSLT CHARACTER 10 INFOTEXT KNDRSLT CHARACTER 30 TSTMP KNDRSLT TIMESTAMP
Hoffe es erklärt zu haben.Code:TEXT = %trim(%XLATE(HK:HK1:TEXT)); SqlQry = 'INSERT INTO STATISTIK + SELECT char(' + %TRIM(FELDNAME) + '), + min(' + HK + %TRIM(SOURCE) + HK + '), + min(' + HK + %TRIM(TEILDATEI) + HK + '), + min(' + HK + %TRIM(TEXT) + HK + '), + min(' + HK + %TRIM(FELDNAME) + HK + '), + min(' + HK + %TRIM(FELDLAENGE) + HK + '), + COUNT(*), + min(' + HK + %TRIM(INFOTEXT) + HK + '), ' + %CHAR(SQLCOD) + ' from ' + %TRIM(TEILDATEI) + ' A '; IF %SCAN('A':FELDLAENGE) = *ZEROS; // Feld Numerisch SqlQry = %TRIMR(SqlQry) + ' WHERE exists + (select * from KUNDENP P + where dec(A.' + FELDNAME + ', 13, 0) = P.KDNNR)'; ELSE; // Feld Alpha SqlQry = %TRIMR(SqlQry) + ' WHERE exists + (select * from KUNDENP P + where A.' + FELDNAME + ' = CHAR(P.KDNNR))'; ENDIF; SqlQry = %TRIMR(SqlQry) + ' group by char(' + %TRIM(FELDNAME) + ')'; Exec SQL execute immediate :SqlQry; INSERT INTO STATISTIK SELECT char(OLDKDN), ... FROM MYFILE A WHERE exists (select * from KUNDENP P where dec(A.OLDKDN , 13, 0) = P.KDNNR ) GROUP BY char(OLDKDN)
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks