so, habe jetzt das ganze fertig, die Performance passt jetzt halbwegs. Habe 2 Subselects drinnen, die sich meiner Meinung nach nicht vermeiden lassen, ABER:

Jetzt habe ich ein neues Problem: wenn ich den View in ein SAVF packe, und den View auf einer anderen AS/400(wo die SAP-Daten liegen) wieder 'auspacke' funktioniert der Zugriff ordnungsgemäss AUSSER die 2 Felder tel2 und mobil2. Dort bekomm ich immer blank im Ergebnis.

Was kann das sein ?

Auf der anderen Maschine funktiokniert der Zugriff, dort liegen Kopien der 3 Datein KNA1,ADR2 und ADR6.




Code:
 
 
create view cmsms1/zkna4_view AS 
(Select A.MANDT, A.KUNNR, A.NAME1, A.NAME2, A.STRAS, A.ORT01, 
A.PSTLZ, A.LAND1, A.SORTL, 
 
Coalesce(Min(Case When B.R3_User = '1' or (B.r3_user = ' ' and 
B.flgdefault = 'X') 
Then Tel_Number End), '') as Tel1, 
 
Coalesce(Min(Case When B.R3_User = ' ' and B.flgdefault = ' ' 
and B.consnumber = (Select Min(Consnumber) from 
R3P02DATA/adr2 where addrnumer = A.adrnr and 
R3_User = ' ' and flgdefault = ' ') 
Then Tel_Number End), '') as Tel2, 
 
Coalesce(Min(Case When B.R3_User = '3' or (B.r3_user = '2' and 
B.flgdefault = 'X') 
Then Tel_Number End), '') as Mobil1, 
 
Coalesce(Min(Case When B.R3_User = '2' and B.flgdefault = ' '
and B.consnumber = (Select Min(Consnumber) from 
R3P02DATA/adr2 where addrnumer = A.adrnr and 
R3_User = '2' and flgdefault = ' ') 
Then Tel_Number End), '') as Mobil2, 
 
Coalesce(Min(Case When C.FLGDEFAULT = 'X' 
Then SMTP_ADDR End), '') as EMail1, 
 
Coalesce(Min(Case When C.FLGDEFAULT = ' ' 
and C.consnumber = (Select Min(Consnumber) from 
R3P02DATA/adr6 where addrnumer = A.adrnr and 
flgdefault = ' ') 
Then SMTP_ADDR End), '') as EMail2, A.STCEG 
 
From R3P02Data/KNA1 a 
left outer join R3P02Data/ADR2 b on b.ADDRNUMBER = ADRNR 
left outer join R3P02Data/ADR6 c on c.ADDRNUMBER = ADRNR 
Where A.KUNNR < '0000999999' AND A.MANDT = '101' 
AND A.BEGRU <> 'LOES' 
Group By A.MANDT, A.KUNNR, A.NAME1, A.NAME2, A.STRAS, 
A.ORT01, A.PSTLZ, A.LAND1, A.SORTL, A.STCEG)