Hallo,

man kann das Ganze höchstens mit Common Table Expressions lesbarer machen:

Vielleicht so:
PHP-Code:
with x as (Select Year(Current_Date)  * 10000 +
                  
Month(Current_Date) *   100 +
                  
Day(Current_Date)  as TagesDatum
              From SysIBM
/SysDummy1),
     
as (Select Max(MyNumDate) as MaxDateFeld1
              From MyTable cross join x 
              Where MyNumDate 
TagesDatum and Feld1 'a' ...)
Select a.*
   
from MyTable a join y on MyNumDate MaxDate 
   Where Feld1 
'a' .... 
Das Problem liegt darin, dass das Datum numerisch ist, und die Verarbeitung von numerischen Datumswerten mit SQL etwas komplizierter ist.

Um den Source-Code noch etwas einfacher zu machen, könnte man für die Ermittlung des numerischen Tagesdatum eine UDF (User Defined Function) schreiben und diese einbinden.

Beispiel:
PHP-Code:
CREATE FUNCTION MySchema/AktDatNum ( ) 
       
RETURNS DECIMAL(80)   
       
LANGUAGE SQL 
       NOT DETERMINISTIC 
       CONTAINS SQL 
       CALLED ON NULL INPUT 
       NO EXTERNAL ACTION 
       DISALLOW PARALLEL 
       NOT FENCED 
BEGIN 
       
DECLARE CURDATE DATE 
       
SET CURDATE CURRENT_DATE 
       RETURN(
YEAR(CURDATE) * 10000 MONTH(CURDATE) * 100 DAY(CURDATE )); 
END  
Damit kann man dann das SQL-Statement wie folgt vereinfachen
PHP-Code:
with y as (Select Max(MyNumDate) as MaxDate 
              From MyTable  
              Where MyNumDate 
AktDatNum() and Feld1 'a' ....)
Select a.* 
   
from MyTable a join y on MyNumDate MaxDate  
   Where Feld1 
'a' ...