Hallo!
Ich habe z. B. eine Tabelle, in der die Vertragsdaten gespeichert werden. Ich möchte eine kleine Statistik-Tabelle anzeigen, in der für jeden Monat eines Jahres Anzahl der neu abgeschlossenen, verlängerten, gekündigte und stornierten Verträgen drin steht. Also 12 Zeilen und vier Spalten. Am besten sollten die Daten mit einer einzigen Abfrage geladen werden. Und genau da liegt mein Problem. Ich kann ohne Probleme die Daten für jeden einzelnen Monat oder auch für alle Monate abfragen und zurückgeben, aber meine Code liefert immer nur eine einzelne Zeile zurück. Ich würde aber gerne die 12 Zeilen zurückbekommen, die ich dann bequem in einer Schleife durchgehen kann. So generiere ich die Daten für einen bestimmten Monat:
SQL-Code:
DECLARE @januar_neue_vertraege INTEGER;
DECLARE @januar_verlaengerte_vertraege INTEGER;
DECLARE @januar_gekuendigte_vertraege INTEGER;
DECLARE @januar_stornierte_vertraege INTEGER;
SET @januar_neue_vertraege = (SELECT COUNT(*) FROM [VERWALTUNG].[dbo].[KUNDEN] WHERE u_vertragsdatum >= '01.01.2008' and u_kunde_seit <= '31.01.2008');
SET @januar_verlaengerte_vertraege = (SELECT COUNT(*) FROM [VERWALTUNG].[dbo].[KUNDEN] WHERE u_zuletz_verlaengert_am >= '01.01.2008' and u_kunde_seit <= '31.01.2008');
SET @januar_gekuendigte_vertraege = (SELECT COUNT(*) FROM [VERWALTUNG].[dbo].[KUNDEN] WHERE u_gekuendigt_am >= '01.01.2008' and u_kunde_seit <= '31.01.2008');
SET @januar_stornierte_vertraege = (SELECT COUNT(*) FROM [VERWALTUNG].[dbo].[KUNDEN] WHERE u_storniert_am >= '01.01.2008' and u_kunde_seit <= '31.01.2008');
SELECT m01_n = @januar_neue_vertraege,
m01_v = @januar_verlaengerte_vertraege,
m01_g = @januar_gekuendigte_vertraege,
m01_s = @januar_stornierte_vertraege;
Wie bekomme ich nun die Daten für alle Monate in einer Tabelle? Ich habe schon an eine temporäre Tabelle gedacht, der ich in einer Schleife die Daten für jeden Monat hinzufüge und dann ein SELECT ausführe. Ich dachte aber, es gibt nocht eine bessere Methode. Wie mache ich das am besten?