Monatssummen mit Hilfe von Subqueries ermitteln (SQL)

Ein häufiges Szenario ist eine Tabelle, die verschiedene Einträge mit einem bestimmten Datum beinhaltet, und für die dann Monatssummen für die Häufigkeit des Auftretens der Ereignisse ermittelt werden sollen:

z.B. eine Tabelle, die Beschwerdeneingänge erfasst, mit folgenden Beispielaufbau (vereinfacht)

ID, Beschwerde, Datum, Kunde

Kunde_id verweist dabei auf eine andere Tabelle Kunden. Beide verknüpft über ein ID-Feld. z.B. könnten folgende Datensätze erfasst sein:

1, Beschwerde 1, 17.02.2008, 993
2, Beschwerde 2, 19.02.2008, 1001
3, Beschwerde 3, 17.03.2008, 993

Nun möchte man z.B. ausgeben, wieviele Beschwerden pro Kunde in den einzelnen Monaten erfasst worden sind.

Folgende Query für eine Tabelle Beschwerde würde dies ermitteln:

abfrage:=‘SELECT  firma, Monat, Jahr, count(*) AS Anzahl, dateasStr FROM (SELECT firma, EXTRACT(Month FROM
Beschwerde.datum ) AS Monat,      EXTRACT(Year FROM Beschwerde.datum ) AS Jahr,
Trim(Cast(EXTRACT(Month FROM Beschwerde.datum ) as Char(2))) ||  ‚+QuotedStr(‚/‘)+‘ ||
Cast(EXTRACT(Year FROM Beschwerde.datum ) as Char(4)) AS DateAsStr  FROM beschwerde  inner join
kundentabelle on  kundentabelle.id=beschwerde.kunde ) as Beschwerde GROUP BY dateasstr,Jahr, Monat,
firma order by jahr desc
‚;

Daraus ergebe sich dann z.B. folgendes Ergebnis

Firma                 Monat     Jahr        Anzahl       DateAsStr
Musterfirma    2               2008       2                  02/2008

DateAsStr ergibt sich aus dem Konstrukt

Trim(Cast(EXTRACT(Month FROM Beschwerde.datum ) as Char(2))) ||  ‚+QuotedStr(‚/‘)+‘ ||
Cast(EXTRACT(Year FROM Beschwerde.datum ) as Char(4)) AS DateAsStr

Natürlich nicht zwingend erforderlich,  aber wie im echten Fall, nützlich, um z.B. gleich die passende Achsenbeschriftung für ein Chart zu haben.

Das SQL-Statement wurde für NexusDB generiert, für andere Datenbanken ist u.U. eine Anpassung notwendig.

Werbung & Infos:

Aktuelles Bitdefender Angebot


Extra HP Gutschein für Dich als mein Leser

Spare jetzt 10% beim Kauf eines Notebooks mit dem Gutschein HPMB10. Auch gültig für andere Produkte im HP Store und auch gültig für bereits rabattierte Angebote. Du kannst mit dem HP Gutschein also noch mal 10% extra sparen, acuh wenn ein Produkt bereits im Angebot ist.



Verwandte Themen: