-
SUM(Case)
Hallo,
habe da ein Problem mit einem Sum(Case ..).
Ich möchte, wenn in VZT2 <> 0 as drin steht diesen Wert ansonsten den Wert VZT1 summieren.
SELECT
SUM(Case When VZT2 <> 0 then VZT2 ELSE VZT1 END)
FROM MyFile
Mit diesem Sql bekomme ich das Ergebnis 2190 anstatt von 955.
Was mache ich da falsch?
Code:
VZT1 VZT2 Ergebnis(gewünschtes)
440 0 440
205 0 205
60 0 60
40 18 18
270 117 117
25 0 25
90 0 90
=====
955
Gruß und Dank
Tarki
-
Was liefert dieser SELECT mit CASE aber ohne SUM() an Werten?
-
Hi,
folgende Werte erhalte ich mit CASE:
Code:
Ausdruck CASE
440
440
440
205
205
60
60
18
117
25
90
90
-
Na das ergibt doch genau die 2190. 
 Zitat von tarkusch
Hi,
folgende Werte erhalte ich mit CASE:
Code:
Ausdruck CASE
440
440
440
205
205
60
60
18
117
25
90
90
-
Ja schon, aber ich hätte gerne das Ergebniss: 955 gehabt 
Im Case frage ich ja ab, ob VZT2 größer als 0 ist.
-
Deine Werte ergeben nunmal in Summe 2190 und nicht 955.
Dein SELECT mit CASE liefert den Wert 440 insgesamt 3 Mal, das ergibt ja schon 1320.
-
Funktioniert das Select mit CASE nicht Zeilenweise?
-
Mach mal "SELECT VZT1, VZT2 FROM MyFile" und rechne nochmal nach. Deine 955 können nicht ganz stimmen.
-
Vielleicht willst du ja nur eindeutige Werte ?
440 3x, 90 2x
sum(distinct case ...)
-
sieht mir eher danach aus, als hättest du noch einen JOIN in deinem Query, der bei der Verknüpfung von 2 Tabellen einige Zeilen dupliziert. In diesem Fall solltest du dir die Verknüpfungsbedingung nochmal anschauen ...
-
Danke Herr Fuerchau und natürlich die anderen Mitglieder,
mit Distinct
SELECT SUM(Distinct Case When VZT2 <> 0 then VZT2 ELSE VZT1 END) FROM MyFile
komme ich zu dem gewünschten Ergebnis.
Ich habe mir die Workdatei MyFile aufgebaut und im Programm abgefragt, ob das Feld VZT2 leer ist und dann dementsprechend summiert.
Wenn ich folgendes Statement aufrufe:
SELECT VZT1, VZT2 FROM MyFile
Group by Feld1, Feld2, Feld3
bekomme ich dieses Ergebnis:
Code:
VZT1 VZT2
440 0
205 0
60 0
40 18
270 117
25 0
90 0
Habe ich mit dem Group by ... nicht eindeutige Werte?
Bewirkt das Distinct in diesem Fall das nur Zeile für Zeile verglichen wird?
Danke
-
Mit dem Group by werden die Werte auf Feld1, Feld2 und Feld3 verdichtet. Diese Felder haben jedoch nichts mit den Werten, die aus den Feldern VTZ1 und VTZ2 kommen zu tun!
Birgitta
Similar Threads
-
By fpxx in forum NEWSboard Programmierung
Antworten: 15
Letzter Beitrag: 18-10-12, 16:58
-
By WoD in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 23-06-09, 06:17
-
By linguin in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 24-04-07, 11:22
-
By JonnyRico in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 30-03-06, 12:33
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