-
... sieht für mich auch nach einem Bug in der Query engine aus. Aufpassen muss man natürlich auch, dass man im Hauptselect nix doppelt kriegt (select distinct kunde oder so). Alternativ kann man da auch die Datei 24 mal dranjoinen, dann hat man die Umsätze pro Monat auch nebeneinander.
D*B
-
Ggf. finden SQL die Bezüge nicht richtig da du die Table-ID's doppelt vergibst.
Tabelle P2 gibt es außerhalb des Subselects als auch innerhalb!
Mach dies mal eindeutig, wobei du nicht für jeden Subselect eine neue ID brauchst.
-
Hallo,
selbst wenn ich es umbaue dann bekomme ich einen SQL-Fehler.
select p1.adkto
, (select ist from planz where p1.adkto = knd and monat =
201301)
, (select ist from planz where p1.adkto = knd and monat =
201302)
, (select ist from planz where p1.adkto = knd and monat =
201303)
from soe01/adr01pf p1 where adkto = 11173
Vielleicht sollte ich doch nochmal schauen ob ich die UDF performanter bekomme.
GG
-
Ich würde auch mal ganz lapidar sagen, dass 24 unabhängige SELECTs das Ganze auch nicht unbedingt performanter machen.
Dabei werden im Gegensatz zu der UDF (alle 24 Werte als String in einer Spalte) auch 24 einzelne Spalten generiert.
Ist das so gewollt?
Anstatt 24 einzelnen Sub-SELECTS würde ich es mit einer einzigen Common Table Expression oder einem einzigen Sub-Select in der FROM-Anweisung versuchen.
Code:
Select P1.adKto,
Sum(Case When Monat = 201301 Then Coalesce(IST, 0) else 0),
Sum(Case When Monat = 201302 Then Coalesce(IST, 0) else 0),
Sum(Case When Monat = 201303 Then Coalesce(IST, 0) else 0),
...
From SOE01/ADR01PF p1 Left outer Join
(Select Knd, Sum(Ist) Ist
from Planz
Group By Knd) x on p1.adkto = Knd
Where ....
Group by P1.ADKTO
Order By P1.ADKTO;
oder
Code:
With x as (Select Knd, Sum(Ist)
From Planz
Group By Knd)
Select P1.adKto,
Sum(Case When Monat = 201301 Then Coalesce(IST, 0) else 0),
Sum(Case When Monat = 201302 Then Coalesce(IST, 0) else 0),
Sum(Case When Monat = 201303 Then Coalesce(IST, 0) else 0),
...
From SOE01/ADR01PF p1 Left outer Join on P1.ADKTO = KND
Where ....
Group By P1.ADKTo
Order By P1.ADKTO;
Birgitta
-
 Zitat von Fuerchau
Wenn du einen Cursor erstellst obwohl du nur einen Satz benötigst, musst du auch alle Sätze (auch wenn es nur 1 wird) in einer Schleife verarbeiten (die Syntax weiß ich im Moment nicht).Sonst bleibt der Cursor offen und kann im Wiederholungsfall nicht noch mal verwendet werden.Der Return muss also hinter das End!Alternativ geht auch ein "select ... into ....", dann gibt's keinen Cursor.
Das End ist da schon richtig. Das Return steht hinter dem "end for"Irgendwie verhuddelt mein Firefox auf der Arbeit die Text und nimmt alle Leerzeichen etc. raus. Zuhause der Firefox läßt alles so wie es ist. Ich bin noch nicht hinter dieses nervige Geheimnis gekommen. Evt versuche ich es mal mit dem IE obwohl ich den nicht mag..GG
Similar Threads
-
By KingofKning in forum IBM i Hauptforum
Antworten: 14
Letzter Beitrag: 17-05-14, 10:33
-
By logo_2 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 28-04-03, 12:51
-
By alex in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 19-04-02, 08:05
-
By Cassius in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 05-03-02, 19:28
-
By thomsta in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 07-02-02, 10:54
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