PDA

View Full Version : SUM(Case)



Seiten : [1] 2

tarkusch
28-12-12, 13:30
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?


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

Pikachu
28-12-12, 13:47
Was liefert dieser SELECT mit CASE aber ohne SUM() an Werten?

tarkusch
28-12-12, 13:54
Hi,
folgende Werte erhalte ich mit CASE:


Ausdruck CASE
440
440
440
205
205
60
60
18
117
25
90
90

Pikachu
28-12-12, 13:56
Na das ergibt doch genau die 2190. ;)


Hi,
folgende Werte erhalte ich mit CASE:


Ausdruck CASE
440
440
440
205
205
60
60
18
117
25
90
90

tarkusch
28-12-12, 13:59
Ja schon, aber ich hätte gerne das Ergebniss: 955 gehabt :confused:

Im Case frage ich ja ab, ob VZT2 größer als 0 ist.

Pikachu
28-12-12, 14:04
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.

tarkusch
28-12-12, 14:08
Funktioniert das Select mit CASE nicht Zeilenweise?

Pikachu
28-12-12, 14:22
Mach mal "SELECT VZT1, VZT2 FROM MyFile" und rechne nochmal nach. Deine 955 können nicht ganz stimmen.

Fuerchau
28-12-12, 14:45
Vielleicht willst du ja nur eindeutige Werte ?
440 3x, 90 2x

sum(distinct case ...)

meini
28-12-12, 15:30
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 ...