-
Sql Summe Feld aus 2 Datensätzen
Moin moin,
ich hätte da mal wieder ein Problem, wo ich den Wald vor lauter Bäumen nicht sehe
Ich baue gerade an einer Abfrage um diverse Summen zu berechnen und das funktioniert auch ganz gut bisher.
Nun brauche ich aber in einer Abfrage, die ich über eine View laufen lasse, die Summe eines Feldes aus einer 2. Datei. Dieses will ich in einem Sub-Select mit einfügen.
select a.abc,
(select sum(b.zumRechnen) as summe from LIB/DATEIB B
where a.key = b.key and b.key2 = 'key')
from LIB/DateiA a join LIB/DATEIB B2 on
a.key = B2.key
where B2.key2 = 'key'
group by a.abc
In der Datei DATEIB sind diverse Datensätze zugehörig zu DateiA (nur 1 Datensatz) aus einer bestimmten Anzahl Datensätze soll die Summe eines bestimmten Feldes ermittelt werden.
Ich bekomme dann beim ausführen via StrSql allerdings die Fehlermeldung
"Ergebnis der Anweisung enthält mehr als eine Zeile".
Vielleicht kann mir ja jemand helfen?
Gruß
Devjo
-
Hallo Joe,
Ich würde eher eine andere Fehlermeldung erwarten, da ich mir nicht sicher bin, ob der Fehler nicht in der Group By Syntax steckt.
Ich kenne allerdings auch nicht deine Daten.
Ich würde an deiner Stelle die Abfragen splitten und dich langsam vorarbeiten um den Fehler eingrenzen zu können.
lg Andreas
-
Moin Andreas,
inzwischen habe ich es hinbekommen....meiner Fehler war das ich den Join noch mit rein genommen habe, dadurch hat (bzw. hätte bei ausführung) er sich (denke ich zumindest) aufgespult.
Jetzt läuft die Abfrage, sogar besser, als ich gedacht hätte
Gruß
Devjo
-
Deine Syntax ist eigentlich falsch!
"select ..., (select ...), ..." ist ein "skalarer Subselect", dieser liefert ein Ergebnis auf dem Einzelsatz.
Bei Aggregaten mit scalarem Subselect wäre korrekt:
select f1, sum((select sum(...) from ... where ...))
from ...
where ...
group by ...
Eigentlich sollte beim Fehlen des ersten "sum" ein Aggregatfehler (Syntaxfehler) und kein Ergebnis kommen.
-
Ich würde die Syntax ändern und den Sub-Select nicht bei den SELECT-Feldern sondern entweder in der FROM-Anweisung oder als Common Table Expression hinterlegen. Beides ist m.E. leichter zu verstehen und lesen:
1. Sub-Select in der FROM-Anweisung:
Code:
Select a.abc, ... , Summe
From DateiA a Join (Select Key1B, Key2B, ... Sum(Feld) Summe
From DateiB b
Where ....
Group By Key1, Key2, ...) x
on a.Key1 = x.Key1 and a.Key2 = x.Key2 ...
Where ...
2. Common Table Expression
Code:
With x as (Select Key1, Key2, ... Sum(Feld) Summe
From DateiB
Where ...
Group By Key1, Key2, ....)
Select ABC, .... , Summe
From DateiA a join x
on a.Key1 = x.Key1, a.Key2 = x.Key2 ...
Where ...
Birgitta
Similar Threads
-
By harbir in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 31-10-13, 18:10
-
By heynem in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 05-12-02, 09:27
-
By GS in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 09-10-02, 12:18
-
By HoScHiE in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 25-10-01, 21:06
-
By LGALF in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 05-07-01, 17:09
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