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:
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
Im Programm stopple ich folgendes Sqlstatement zusammen:
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)
Hoffe es erklärt zu haben.