SQL Frage zu Abfrage (Berechnung mehrerer Felder)

goodfella

Lieutenant
Dabei seit
Jan. 2008
Beiträge
941
Hi zusammen,

ich habe ein Problem bei einer Berechnung von Daten, welche mehrere Tabellen berücksichtigt.

Ich habe in einer Tabelle 2 Spalten, die ich addieren werde, wenn in einer aderen
Spalte ein Wert (1) steht. Danach erhalte ich den Gesamtwert1.

Ich habe jetzt eine zweite Berechnung, welche die gleichen 2 Spalten addiert, wenn in einer anderen Spalte der Wert (2) steht. Hier erhalte ich dann den Gesamtwert 2.

Ich fasse nochmal zusammen.

Spalte A + Spalte B (nur Summen die eine Kondition in Spalte C haben, nämlich 1)
Spalte A + Spalte B (nur Summen mit Kondition 2 in C)

Und danach Gesamtsumme 1 - Gesamtsumme 2.

Nun muss ich noch Gesamtwert1 minus Gesamtwert 2 rechnen, aber ich hier stoße ich an meine Grenzen, was Unterabfragen anbetrifft.

Wäre gut, wenn ihr mir helfen könntet.

Danke und Gruß,

GoodFella
 

benneq

Admiral
Dabei seit
Juli 2010
Beiträge
9.247
Gut für uns(!) wäre es, wenn du einfach mal Beispieltabellen hier reinstellst. (Sollten ja nur 2 nötig sein, wie ich das gelesen habe?!). Alleine mit dem Text konfrontiert lässt sich sehr schwer erkennen was genau du willst.

Also z.B. so:
Tabelle1
Code:
id | inhalt
----------
1   | 42
2   | NULL
3   | 1
Und dann sagst du nochmal genau aus welcher Tabelle, du welches Attribut mit welchem anderen Attribut wie vergleichen/verknüpfen willst, etc.
 

goodfella

Lieutenant
Ersteller dieses Themas
Dabei seit
Jan. 2008
Beiträge
941
Hi,

Danke für die Antwort.

Die Tabelle heisst z. B. Gesamtbeträge.

Diese hat die 3 Spalten:

BetragA | Betrag B | Kennzeichen
123,30 | 1200,50 | 1

In der gleichen Tabelle gibt es aber auch Beträge, die das Kennzeichen 2 haben.
z. B.

BetragA | Betrag B | Kennzeichen
440,50 | 850,30 | 2

Diese haben allerdings das Kennzeichen 2.
Ich möchte nun die Summe aus den Gesamtbeträgen (Betrag A + Betrag 2) bilden,
wenn das Kennzeichen 1 ist. Dasselbe möchte ich für die Beträge mit Kennzeichen 2 machen.

Am Ende ziehe ich Gesamtbetrag (Kennzeichen 2) von dem Gesamtbetrag (Kennzeichen 1) ab.

Gruß goodfella
 

3murmeln

Lieutenant
Dabei seit
Juli 2010
Beiträge
738
Code:
select ((select sum(BetragA+BetragB) As Summe1
         from Tabelle
         where Kennzeichen = 1
        )
        -
        (select sum(BetragA+BetragB) as Summe2
         from Tabelle
         where Kennzeichen = 2
        )
       ) As SummeG
So oder ähnlich sollte das aussehen - funktioniert aber wohl nur unter MS SQL Server. Ansonsten würde es evtl. helfen die Sub-Selects als Views anzulegen.
 

Hancock

Captain
Dabei seit
Nov. 2007
Beiträge
3.375
Dir ist bewusst, dass das mit tricksen auch lustig und einfach geht? (Sofern ich das Problem richtig verstanden hab).

select sum(
-(a+b)*2*(k-1.5)
) from Tabelle

Bildlich geschrieben ist ja die Summe eine stinknormale mathematische Summe, in der man umsortieren darf.
Jetzt lass ich alles so wie es ist und suche einen mathematischen Operator, welcher für 2=-1 und für 1=1 ist
Mitte ist 1.5
k-1.5 -> {-0.5,0.5} dabei ist das Vorzeichen verdreht und nur die Hälfte
=>
*-2*(k-1.5)
Das -2 könnte man noch aus der Klammer rausziehen.
 

FrankR

Cadet 3rd Year
Dabei seit
Mai 2011
Beiträge
33
Code:
select   sum(case 
               when Kennzeichen = 1 then BetragA+BetragB 
               else -(BetragA+BetragB) 
             end) As Summe    
from     Tabelle
FrankR
 
Top