![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBX
SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben?
Momentan führe ich zwei sehr komplexe selects aus und stelle mit union die Summen dieser beiden Abfragen getrennt untereinander da. Nun möchte ich im Result noch eine dritte Zeile haben, die die Gesamtsumme beider Abfragen enthält. Ich könnte dies wie unten angegeben durch eine weitere Abfrage machen, die Abfrage 1 und 2 kombiniert und diese Gesamtsumme dann mit einem union anfügen. Das ist jedoch nicht gerade performant, da dann ja Abfrage 1 und 2 nochmal ausgeführt werden. Wie kaann ich also die Ergebnisse ganz einfach zusammenzählen, ohne erneut Abfragen zu müssen?
SQL-Code:
Beispiel:
select sum(Betrag) from tabelle_a where xyz
union select sum(Betrag) from tabelle_a where abc union select sum(Betrag) from tabelle_a where abc or xyz
SQL-Code:
sum(Betrag)
100 50 150 |
Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben
mach ein Upgrade auf FB2.0 und dann:
SQL-Code:
select sum from(
select sum(Betrag) from tabelle_a where xyz union select sum(Betrag) from tabelle_a where abc union select sum(Betrag) from tabelle_a where abc or xyz); |
Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben
Zitat:
|
Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben
Du meinst wohl:
SQL-Code:
Das ist glaube ich nicht ganz das was ich wollte. Erhalte ich dadurch nicht nur eine einzige Summe? Ich möchte die zwei Summen der beiden Abfragen haben und eine Gesamtsumme.
select sum(betrag) from(
select sum(Betrag) as Betrag from tabelle_a where xyz union select sum(Betrag) as betrag from tabelle_a where abc); |
Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben
Man muss die Daten übrigens mit UNION ALL vereinigen. Wenn man nur mit UNION arbeitet,
werden Datensätze mit gleichem Inhalt ausgefiltert. Zitat:
SQL-Code:
Das sollte man besser Clientseitig ausrechnen und präsentieren.
select sum(Betrag) as Betrag from tabelle_a where xyz
union all select sum(Betrag) as betrag from tabelle_a where abc) union all select sum(betrag) from( select sum(Betrag) as Betrag from tabelle_a where xyz union all select sum(Betrag) as betrag from tabelle_a where abc) |
Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben
SQL-Code:
select
sum(b1.Betrag) as summe1, sum(b2.Betrag) as summe2, sum(b1.Betrag)+sum(b2.Betrag) as summe from tabelle_a b1, tabelle_a b2 where b1. ... = abc and b2. ... = xyz; |
Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben
Zitat:
|
Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben
Stimmt, man müßte Gruppieren
|
Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben
Zitat:
|
Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben
Poste mal die Struktur der Datenbannk (Tabellen-Metadaten)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz