-
Um was geht es eigentlich?
Willst Du die Sätze aufsummieren oder willst Du nur, dass keine Duplikate angezeigt werden?
In Deinem letzten Beispiel hast Du zwar mehrere Felder aus unterschiedlichen Dateien ausgewählt, aber ich sehe weder eine Aggregat-Funktion (z.B. Sum(Fldx) oder Count(*) ) noch einen Group By.
Beim Left Outer Join muss man außerdem berücksichtigen, dass sofern in der zweiten Datei kein Pendant gefunden wird NULL-Werte ausgegeben werden.
Bei NULL-Werten ist zu beachten, dass sie außerhalb des gültigen Bereichs sind und deshalb entweder separat abgefragt oder in Default-Werte konvertiert werden müssen. Außerdem werden NULL-Werte in Aggregat-Funktionen nicht berücksichtigt. Das mag beim SUM() egal sein, jedoch bei COUNT() oder AVG() werden andere Ergebnisse ausgegeben.
Wenn Du lediglich Duplikate vermeiden und keine Aggregat-Funktionen verwenden willst, kannst Du auch wie folgt vorgehen (Group By ist in diesem Fall nicht erforderlich):
Code:
Select Distinct File1.*, File2,*, File3,*
From File1 left Join File2 on ...
left Join File3 on ...
Where ....;
Birgitta
-
Beschreibung der Daten
Ich danke euch erst mal für eure Unterstützung.
Also in der ITHL01 sind Auftragsdaten des Tages seit 2007 vorhanden. Mit Teilenummern TPROD (mehrfach verarbeitet am Tag) und diese Nummer sind als IPROD in der IIML01 abgespeichert. Nun muss nur noch IPROD mit VENDOR aus der AVML01 abgeglichen werden... Und aus allen Tabellen müssen Div. Daten gezogen werden. Ca 30 Werte.... daher mein erster Gedanke mit dem * nach SELECT
-
Im ersten Ansatz würde ich vermuten, dass es doppelte Feldnamen aus verschiedenen Tabellen gibt.
SQL muss da schon wissen welches Feld du da meinst, außerdem müssen Kommentare mit
/* Kommentar */
oder
-- Kommentar < CR > < LF >
eingebettet sein:
SELECT A.TPROD, /*von ITHL01 */
A.TTDTE, /*von ITHL01 */
B.IPROD, /*von IIML01 */
B.IDESC, /*von IIML01 */
C.VENDOR /*von AVML01 */
FROM BPCSF.ITHL01 A
LEFT JOIN BPCSF.IIML01 B
ON A.TPROD = B.IPROD
LEFT JOIN BPCSF.AVML01 C
ON B.IPROD = C.VENDOR
Where A.TTDTE >= 20110331
and B.IITYP ='K'
-
Leider ein Fehler
SQL-Status: 22003
Vendorencode: -802
Nachricht: [SQL0802] Fehler bei Datenumsetzung oder beim
Zuordnen von Daten. Ursache . . . .
: Fehler der Art 1 ist aufgetreten:
Fehlerarten und ihre Bedeutung: 1 -- Arithmetischer Überlauf 2 --
Gleitkommaüberlauf 3 -- Gleitkommaunterlauf 4 -- Gleitkommakovertierungsfehler
5 -- Kein exaktes Ergebnis 6 -- Ungültige numerische Daten 7 -- DBCS- oder
UTF-8-Daten sind nicht gültig. 8 -- Division durch Null 9 -- Hash-Wert kann für
die angeforderte Abfrage nicht berechnet werden. 10 -- Benutzerdefinierte
Funktion hat Abgleichungsfehler zurückgegeben. 11 -- Ungültige Länge in Spalte
mit variabler Länge gefunden, die von einer Array-Ergebnisgruppe zurückgegeben
wurde. 12 -- Ergebnis einer Verknüpfungsperation für ein Feld variabler Länge
überstieg die maximal zulässige Länge für die Ergebnisart. Wenn der Fehler beim
Zuordnen eines Werts zu einer Host-Variablen einer Anweisung FETCH oder
eingebetteten Anweisung SELECT, SET oder VALUES INTO auftrat, ist der Name der
Host-Variablen *N und die relative Position der Host-Variablen in der Klausel
INTO ist 0. Ist der Name der Host-Variablen *N, trat der Fehler bei dem Versuch
auf, eine Suchbedingung aufzulösen. Wenn mehrere Fehler beim Zuordnen von Daten
aufgetreten sind, handelt es sich um eine Beschreibung des ersten Fehlers, der
aufgetreten ist. Die vorherigen Nachrichten im Jobprotokoll beschreiben Fehler,
die beim Zuordnen von Daten aufgetreten sind. Fehlerbeseitigung: Der Fehler wurde von ungültigen oder zu
umfangreichen Daten verursacht. Die vorherigen Nachrichten im Jobprotokoll
(Befehl DSPJOBLOG) oder F10 (Nachrichten im Jobprotokoll anzeigen) in dieser
Anzeige drücken, um die fehlerhaften Zeilen und Spalten zu bestimmen. Die Daten
korrigieren und die Anforderung wiederholen.
ffice ffice" />>>
Verarbeitung wurde beendet, da die hervorgehobene
Anweisung nicht erfolgreich abgeschlossen werden konnte
-
... und Du glaubst wir können Dir jetzt weiterhelfen, ohne das SQL-Statement, das Du ausgeführt hast und Deine Daten zu kennen??????
Birgitta
-
SQL STM
Guten Morgen,
hier ein SQL das geht... es ist aber nur ein LEFT JOIN enthalten
Code:
SELECT TPROD,
TTDTE,
BPCSF.IIML01.IDESC
FROM BPCSF.ITHL01
LEFT JOIN BPCSF.IIML01
ON TPROD = IPROD
Where TTDTE >= 20110331
Und nun wollte ich eine weitere Tabelle über LEFT Join verbinden, jedoch kommt da die u.g. Fehlermeldung.
Code:
SELECT TPROD,
TTDTE,
BPCSF.IIML01.IDESC,
BPCSF.AVML01.VNDNAM /*T3 neu*/
FROM BPCSF.ITHL01
LEFT JOIN BPCSF.IIML01
ON TPROD = IPROD
LEFT JOIN BPCSF.AVML01 /*T3 neu*/
ON BPCSF.IIML01.IPROD = VENDOR
Where TTDTE >= 20110331 and IITYP ='K'
Fehlermeldung
SQL-Status: 22003
Vendorencode: -802
Nachricht: [SQL0802] Fehler bei Datenumsetzung oder beim Zuordnen von Daten. Ursache . . . . : Fehler der Art 1 ist aufgetreten: Fehlerarten und ihre Bedeutung: 1 -- Arithmetischer Überlauf 2 -- Gleitkommaüberlauf 3 -- Gleitkommaunterlauf 4 -- Gleitkommakovertierungsfehler 5 -- Kein exaktes Ergebnis 6 -- Ungültige numerische Daten 7 -- DBCS- oder UTF-8-Daten sind nicht gültig. 8 -- Division durch Null 9 -- Hash-Wert kann für die angeforderte Abfrage nicht berechnet werden. 10 -- Benutzerdefinierte Funktion hat Abgleichungsfehler zurückgegeben. 11 -- Ungültige Länge in Spalte mit variabler Länge gefunden, die von einer Array-Ergebnisgruppe zurückgegeben wurde. 12 -- Ergebnis einer Verknüpfungsperation für ein Feld variabler Länge überstieg die maximal zulässige Länge für die Ergebnisart. Wenn der Fehler beim Zuordnen eines Werts zu einer Host-Variablen einer Anweisung FETCH oder eingebetteten Anweisung SELECT, SET oder VALUES INTO auftrat, ist der Name der Host-Variablen *N und die relative Position der Host-Variablen in der Klausel INTO ist 0. Ist der Name der Host-Variablen *N, trat der Fehler bei dem Versuch auf, eine Suchbedingung aufzulösen. Wenn mehrere Fehler beim Zuordnen von Daten aufgetreten sind, handelt es sich um eine Beschreibung des ersten Fehlers, der aufgetreten ist. Die vorherigen Nachrichten im Jobprotokoll beschreiben Fehler, die beim Zuordnen von Daten aufgetreten sind. Fehlerbeseitigung: Der Fehler wurde von ungültigen oder zu umfangreichen Daten verursacht. Die vorherigen Nachrichten im Jobprotokoll (Befehl DSPJOBLOG) oder F10 (Nachrichten im Jobprotokoll anzeigen) in dieser Anzeige drücken, um die fehlerhaften Zeilen und Spalten zu bestimmen. Die Daten korrigieren und die Anforderung wiederholen.
Verarbeitung wurde beendet, da die hervorgehobene Anweisung nicht erfolgreich abgeschlossen werden konnt
-
Haben IPPROD und VENDOR den gleichen Datentypen und die gleiche Länge?
Ansonsten denke ich, dass die Verknüpfung von NULL-Werten, die beim Left Outer Join bei nicht gefunden entstehen können für die Fehlermeldung verantwortlich sind.
Deshalb versuch mal folgendes:
Code:
SELECT TPROD, TTDTE, BPCSF.IIML01.IDESC,
BPCSF.AVML01.VNDNAM /*T3 neu*/
FROM BPCSF.ITHL01
LEFT JOIN (BPCSF.IIML01
LEFT JOIN BPCSF.AVML01 /*T3 neu*/
ON BPCSF.IIML01.IPROD = VENDOR)
ON TPROD = IPROD
Where TTDTE >= 20110331 and IITYP ='K'
In dem Beispiel wird zunächst der zweite Left Outer Join ausgeführt und das Ergebnis über Left Outer Join mit der ersten Tabelle verknüpft.
Ist IPROD eigentlich eindeutig, oder in mehreren Tabellen (u.U. mit unterschiedlicher Definition) vorhanden?
Birgitta
-
Super
Der Tipp mit den Datentyp war der richtige!!! Super vielen Dank!! Musste ich noch ändern.
Mensch wenn dann so die Daten angezeigt werden kommt mir immer ein
Similar Threads
-
By Tobse77 in forum NEWSboard Programmierung
Antworten: 12
Letzter Beitrag: 24-09-09, 08:31
-
By rr2001 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 07-07-06, 09:56
-
By klausgkv in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 08-06-06, 13:47
-
By Schorsch in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 08-09-05, 15:22
-
By holly in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 15-06-04, 10:04
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