fungolfer
Neuer Benutzer
- Beiträge
- 2
Guten morgen allerseits. Ich habe da ein Problem. Ich muss aus 3 Tabellen ermitteln, welche Beträge am Jahresende zu erstatten sind. Dabei habe ich eine Gesamttabelle, eine Monatstabelle für aktuelle Zahlen und noch eine Tabelle in der bereits erstattete Beträge enthalten sind, bzw. Beträge, die nicht erstattet werden sollen. Tabelen 1 und 2 habe ich mit einem Union All bereits verbunden und auch das richtige Ergebnis bekommen. Es will mir allerdings nicht gelingen, die bereits erstatteten, bzw. nicht zu erstattenden Beträge einzufügen. Hier mal meine biusherige Abfrage:
select
substr. (Unterabteilung, 1, 2) as Abteilung,
count (*) as Anzahl,
sum (Erstattung) as Betrag
from gesamt
where B_art = 2
and Auszdat between '20141231' and '20150101'
group by substr. (Unterabteilung, 1, 2)
UNION ALL
select
substr. (Unterabteilung, 1, 2) as Abteilung,
count (*) as Anzahl,
sum (Erstattung) as Betrag
from monat
where B_art = 2
and Auszdat between '20141231' and '20150101'
group by substr. (Unterabteilung, 1, 2)
Soweit klappt alles, aber wie bekomme ich jetzt die Beträge raus, die nicht erstattet werden können / sollen?
Die Abfrage über diese Beträge lautet:
Select * from Tabelle c where B_art = 3 and auszahlung = 1 and to_date (auszdat, 'DDMMYYY') between to_date ('31122014', DDMMYYYY) and to_date ('01012015', DDMMYYYY)
Versucht habe ich bisher diese Abfrage in die jewelige Where Klausel einzufügen, allerdings erhalte ich dann völlig andere Beträge als veranschlagt, nämlich wesentlich höhere Beträge. Sollte aber weniger sein.
Ich bin mir nicht sicher, ob mir ein Join hilft, da ich bei einem Join nicht sicher bin, ob dann nicht das selbe Resultat herauskommt. Zusätzlich dazu wüsste ich auch gar nicht, wie ich dann den Join aufstellen soll, dass er eben diese Beträge herausrechnet, statt diese hinzuzufügen. Hat jemand eine erhellende Idee? Muss vielleicht erwähnen, dass ich hier ins kalte Wasser geworfen wurde und von SQL keinen Schimmer habe. Das obige Ergebnis habe ich dank Recherchen im Internet hinbekommen, aber ich finde nix zu Berechnungen und einer zusätzlichen Tabelle, deren Ergebnis eben nicht hinzu-, sondern abgerechnet werden soll.
Für jede Hilfe bin ich äußerst dankbar
select
substr. (Unterabteilung, 1, 2) as Abteilung,
count (*) as Anzahl,
sum (Erstattung) as Betrag
from gesamt
where B_art = 2
and Auszdat between '20141231' and '20150101'
group by substr. (Unterabteilung, 1, 2)
UNION ALL
select
substr. (Unterabteilung, 1, 2) as Abteilung,
count (*) as Anzahl,
sum (Erstattung) as Betrag
from monat
where B_art = 2
and Auszdat between '20141231' and '20150101'
group by substr. (Unterabteilung, 1, 2)
Soweit klappt alles, aber wie bekomme ich jetzt die Beträge raus, die nicht erstattet werden können / sollen?
Die Abfrage über diese Beträge lautet:
Select * from Tabelle c where B_art = 3 and auszahlung = 1 and to_date (auszdat, 'DDMMYYY') between to_date ('31122014', DDMMYYYY) and to_date ('01012015', DDMMYYYY)
Versucht habe ich bisher diese Abfrage in die jewelige Where Klausel einzufügen, allerdings erhalte ich dann völlig andere Beträge als veranschlagt, nämlich wesentlich höhere Beträge. Sollte aber weniger sein.
Ich bin mir nicht sicher, ob mir ein Join hilft, da ich bei einem Join nicht sicher bin, ob dann nicht das selbe Resultat herauskommt. Zusätzlich dazu wüsste ich auch gar nicht, wie ich dann den Join aufstellen soll, dass er eben diese Beträge herausrechnet, statt diese hinzuzufügen. Hat jemand eine erhellende Idee? Muss vielleicht erwähnen, dass ich hier ins kalte Wasser geworfen wurde und von SQL keinen Schimmer habe. Das obige Ergebnis habe ich dank Recherchen im Internet hinbekommen, aber ich finde nix zu Berechnungen und einer zusätzlichen Tabelle, deren Ergebnis eben nicht hinzu-, sondern abgerechnet werden soll.
Für jede Hilfe bin ich äußerst dankbar