SQL Frage zu Abfrage (Berechnung mehrerer Felder)

goodfella

Lieutenant
Registriert
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
 
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.
 
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
 
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.
 
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.
 
Code:
select   sum(case 
               when Kennzeichen = 1 then BetragA+BetragB 
               else -(BetragA+BetragB) 
             end) As Summe    
from     Tabelle

FrankR
 
Zurück
Oben