![]() |
Datenbank: ADS • Version: 11 • Zugriff über: local
SQL : SUM Funktion mit Bedingungen für Felder
Ich finde für ein SQL-Problem nicht den richtigen Ansatz. Als "SQL Legastheniker"
sind meine Suchen gescheitert (wahrscheinlich finde ich nur wieder nicht die richtige Suchbegriffe ! :oops:) Also das Problem: Ich hab eine Tabelle mit den Spalten [Rechnungsbetrag] [Anteil_A] [RechDatumTeilA] [Bezahlt_A] [Anteil_B] [RechDatumTeilB] [Bezahlt_B] Ich möchte jetzt eine Auswertung der Tabelle mit der 1 Gesamtsumme 2 Summe Anteil A 3 Summe Bezahlt A 4 Summe Anteil B 5 Summe Bezahlt B 6 Summe RechnungTeilA und TeilB gestellt 7 Summe noch nicht in Rechnung gestellter Posten A + B Felder 1 bis 5 sind kein Problem; nur 6 und 7 in der gleichen Abfrage krieg ich nicht hin (seperat schon). In SQL sieht das für mich dann so aus:
Code:
Wie krieg ich die hier frei formulierten Bedingungen - also eine WHERE -Klausel nur für die einzelnen
SELECT
SUM(Betrag) AS SummeGesamt, SUM(Anteil_A) AS SummeAnteilA, SUM(Bezahlt_A) AS SummeBezA, SUM(Anteil_B) AS SummeAnteilB, SUM(Bezahlt_B) AS SummeBezB, /* und jetzt haperts: */ SUM(Anteil_A) "wenn RechDatum A = NULL" AS Ohne_Rechnungen + SUM(Anteil_B) "wenn RechDatum B = NULL" AS Ohne_Rechnungen, SUM(Anteil_A)"wenn RechDatum A <> NULL" AS Offene_Rechnungen + SUM(Anteil_B) "wenn RechDatum B <> NULL" AS Offene_Rechnungen FROM Rechnungen; Felder - in SQL hin? Kann mir jemand helfen ? |
AW: SQL : SUM Funktion mit Bedingungen für Felder
Ich verstehe ehrlich gesagt nicht mal deinen Pseudocode im SQL aber prinzipiell geht "iif" wenns das bei ADS gibt:
Code:
Summiert die werte für Feld für alle Datenzeilen wo Feld2 = 3 ist.
sum(iif(feld2 = 3, feld1, 0)) as summe
|
AW: SQL : SUM Funktion mit Bedingungen für Felder
Falls es IIF nicht gibt, gibt es dann wenigstens CASE?
SQL-Code:
SELECT
SUM(CASE WHEN Feld1 IS NULL THEN 0 ELSE Feld2 END) FROM Tabelle |
AW: SQL : SUM Funktion mit Bedingungen für Felder
Das Stichwort heißt SubSelects.
Delphi-Quellcode:
Ich weiß allerdings nicht ob ADS damit klar kommt.
SELECT
SUM(Betrag) AS SummeGesamt, SUM(Anteil_A) AS SummeAnteilA, SUM(Bezahlt_A) AS SummeBezA, SUM(Anteil_B) AS SummeAnteilB, SUM(Bezahlt_B) AS SummeBezB, /* ungetestet */ (SELECT SUM(Anteil_A) WHERE RechDatumTeilA IS NULL) + (SELECT SUM(Anteil_B) WHERE RechDatumTeilB IS NULL) AS Ohne_Rechnungen, (SELECT SUM(Anteil_A) WHERE not RechDatumTeilA IS NULL) + (SELECT SUM(Anteil_B) WHERE not RechDatumTeilB IS NULL) AS Offene_Rechnungen FROM Rechnungen; |
AW: SQL : SUM Funktion mit Bedingungen für Felder
Da auch ich mit dem Pseudocode meine Probleme habe..
wie wäre es mit einem
Code:
Union
Code:
ggf. das Ergebnis dann nochmal mit einen Group summieren
SELECT
SUM(Betrag) AS SummeGesamt, SUM(Anteil_A) AS SummeAnteilA, SUM(Bezahlt_A) AS SummeBezA, SUM(Anteil_B) AS SummeAnteilB, SUM(Bezahlt_B) AS SummeBezB, 0 AS Ohne_Rechnungen, 0 as Offene_Rechnungen FROM Rechnungen Union select 0, 0, 0, 0, 0, SUM(Anteil_A) "wenn RechDatum A = NULL" AS Ohne_Rechnungen + SUM(Anteil_B) "wenn RechDatum B = NULL" AS Ohne_Rechnungen, SUM(Anteil_A)"wenn RechDatum A <> NULL" AS Offene_Rechnungen + SUM(Anteil_B) "wenn RechDatum B <> NULL" AS Offene_Rechnungen FROM Rechnungen; Gruß K-H |
AW: SQL : SUM Funktion mit Bedingungen für Felder
Jawohl das sind Lösungen:
@ Neutral General und DeddyH: - IIF funktioniert @Uwe Raabe: Genau das war das fehlende Stichwort: Mit SubSelect habe ich auch sofort brauchbare Lösungen gefunden Danke an alle ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 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-2025 by Thomas Breitkreuz