-
 Zitat von Fuerchau
Das ist mir schon klar, dass ich NULL-Indikatoren abfragen muss.
Ich finde nur die Ungleichbehandlung fragwürdig.
Kein Mensch muss müssen...
PHP-Code:
exec sql select coalesce( max(PLDAT), '01.01.0001') ,
coalesce( sum(PLMENG), 0) ,
count(*)
into :Wareneingangsdatum
,:Wareneingangsmenge
,:Gefunden
from D060
where PLBBNR = :D242.BBNR
and PLABNR = :D242.BBABNR
and PLPONR = :D242.BBPONR
-
Dies funktioniert leider nicht, wenn der Select keine Daten findet;-).
Da die Felder selber kein NULL erlauben, ist das Coalesce hier sinnlos.
Wenn schon, dann muss man den Coalesce außerhalb machen, allerdings erlaubt ein scalarer Subselect nur 1 Ergebnisfeld, die Abfrage müsste also 2 Mal gemacht werden.
exec sql values(coalesce((select f1 ....), Default), coalesce((select f2 ....), Default)) into ...
Man könnte es auch als Left join machen:
with EinSatz as (
values (1)
)
select coalesce(f1, default), coalesce(f2, default) from EinSatz
left join (
select max(f1) f1, sum(f2) f2 from MyTable
where ...
) x on 1=1
Vielleicht hat Birgitta da noch mehr Ideen;-).
Klar kann ich vor dem SQL einen CLear machen. Allerdings läuft auf den SQL-Variablen ebenso ein Clear so dass der 1. Clear (Micro-Optimierung) unnötig ist.
Die NULL-Indikatoren werden doch nur benötigt um nicht haufenweise Joblogs zu produzieren die die Maschine vollmüllen (auch ohne Debugmodus!).
Bei obigem SQL sollte ein SQLCODE 100 eigentlich vollkommen ausreichen;-).
-
... wie wärs mit create view mit group by?
-
Da ich ja eine eindeutige Where-Klausel habe, brauche ich ja keinen Group By.
Außerdem löst das ebenso nicht das Problem bei No Data, ich bräuchte auch entsprechend mehr NULL-Inds.
-
 Zitat von Fuerchau
Da ich ja eine eindeutige Where-Klausel habe, brauche ich ja keinen Group By.
Außerdem löst das ebenso nicht das Problem bei No Data, ich bräuchte auch entsprechend mehr NULL-Inds.
... die view tauscht dir die nullvalues gegen den sqlcode 100
D*B
-
Dann könnte das mit
select * from (select max....)
klappen.
-
 Zitat von Fuerchau
Dann könnte das mit
select * from (select max....)
klappen.
... der casus knaxus ist, dass die where clause in den äußeren select wandert.
-
Wieso? Ich kodiere den doch innerhalb?
Aber was solls, da alles nichts hilft!
Der wesentliche Unterschied ist
a) select .... into ....
b) open, fetch, close
In der Variante a) benötige ich Null-Inds oder einen "set ... coalesce(....)" oder "Values((coalesce()) into".
In der Variante b) kommt SQLCODE = 100.
-
 Zitat von Fuerchau
Wieso? Ich kodiere den doch innerhalb?
Aber was solls, da alles nichts hilft!
Der wesentliche Unterschied ist
a) select .... into ....
b) open, fetch, close
In der Variante a) benötige ich Null-Inds oder einen "set ... coalesce(....)" oder "Values((coalesce()) into".
In der Variante b) kommt SQLCODE = 100.
... steh mal kurz auf, Du sitzt auf der Leitung:
exec sql select maxPLDAT, sum(PLMENG) sumplmeng
into :Wareneingangsdatum
,:Wareneingangsmenge
from (
select max(pldat) maxpldat, sum(plmeng) sumplmeng
from D060
group by (PLBBNR, PLABNR, PLPONR)
) P
where PLBBNR = 242.BBNR
and PLABNR = 242.BBABNR
and PLPONR = 242.BBPONR ;
Cefix, irgendwie verhunzt er mir die Variablennamen in der where clause!
-
Ich hätte den Where trotzdem in den Subselect gesteckt.
Ansonsten:
Den Text in CODE setzen oder nach dem Doppelpunkt ein Leerzeichen lassen
... : MyVar ...
-
 Zitat von Fuerchau
Ich hätte den Where trotzdem in den Subselect gesteckt.
Ansonsten:
Den Text in CODE setzen oder nach dem Doppelpunkt ein Leerzeichen lassen
... : MyVar ...
... wenn Du den where in den subselect steckst, kriegst Du wieder Nullvalues zurück, wenn keine Sätze gefunden werden!!!
-
... CTE reicht auch schon:
with d as (select max(PLDAT) maxpldat, sum(PLMENG) sumplmeng
from D060
group by (PLBBNR, PLABNR, PLPONR))
select maxpldat, sumplmeng
from d
where ....
und dann kommt sqlcode 100 statt eines Satzes mit Nullvalues.
D*B
Similar Threads
-
By prsbrc in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 16-07-19, 06:44
-
By DKSPROFI in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 19-10-17, 06:54
-
By Dominic K. in forum NEWSboard Programmierung
Antworten: 21
Letzter Beitrag: 14-09-16, 15:43
-
By Thorsten Sell in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 23-02-16, 11:15
-
By KingofKning in forum NEWSboard Server Job
Antworten: 6
Letzter Beitrag: 11-11-14, 18:26
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks