Benutzer mit den meisten Antworten
Pro Monat ein Datensatz

Frage
-
Hallo zusammen
Wie erstelle ich eine Abfrage die pro Monat einen Datensatz zurückgibt?
Es muss ein Datum in einer Tabelle ab heute 30 Monate zurück durchsucht werden.
Wenn das Datum z.B. im Oktober 2013 liegt, sollen 4 Datensätze zurückgegeben werden (Okt 2013, Nov 2013, Dez 2013, Jan 2014)
Ich habe es mit CASE WHEN versucht, aber dies wird nach dem ersten Treffer unterbrochen, liefert also nur einen Datensatz.
Vielen Dank
Antworten
-
Hallo Olaf
Nein, offensichtlich kann ich meinen Wunsch nicht ganz verständlich machen. Ist ja auch ein blödsinniger Wunch von meinem Chef.
Aber, egal, inzwischen habe ich das Problem gelöst.
SELECT ...... UNION SELECT ........ UNION SELECT .......
Vielleicht nicht ganz die optimale Lösung, aber es funktioniert..Vielen dank für die Hilfe
- Als Antwort markiert Ionut DumaModerator Dienstag, 25. Februar 2014 17:01
Alle Antworten
-
Hallo,
so ganz habe ich Deine Frage / Anforderung nicht verstanden; einerseits willst Du pro Monat nur einen Datensatz haben, anderer seits willst Du auch noch was für die nächsten 3 Folgemonate haben ...?
Bitte posten mal die Tabellenstruktur + Beispieldaten, am besten als SQL Statement und das gewünschte Ergebnis.
Olaf Helper
[ Blog] [ Xing] [ MVP] -
OK, ich versuche das zu präzisieren:
In der Tabelle sind zwei Felder, ein Code und ein Datum.x ¦ 15.09.2013
y ¦ 23.10.2013
x ¦ 02.11.2013
x ¦ 10.12.2013
y ¦ 30.01.2014Nun suche ich alle "y".
Das Resultat sollte dann etwa so aussehen:y ¦ Oktober 2013
y ¦ November 2013
y ¦ Dezember 2013
y ¦ Januar 2014
y ¦ Januar 2014Der Januar 2014 muss zwei mal ausgegeben, weil zwei Datensätze vorhanden sind.
-
So ganz passen Beispieldaten und gewünschtes Ergebnis und bisherige Beschreibung nicht überein.
Meinst Du einfach nur auf den Wert "y" gefilter + Monatsnamen mit Jahr als Ausgabe anstelle des kompletten Datums?
Dann versuche es so:
DECLARE @tmp AS TABLE(code char(1), datum date); INSERT INTO @tmp VALUES ('x', '15.09.2013'), ('y', '23.10.2013'), ('x', '02.11.2013'), ('x', '10.12.2013'), ('y', '30.01.2014'); SELECT code, DATENAME(month, datum) + ' ' + DATENAME(year, datum) AS Dat FROM @tmp WHERE code = 'y' ORDER BY datum;
Olaf Helper
[ Blog] [ Xing] [ MVP] -
Hallo Olaf
Nein, offensichtlich kann ich meinen Wunsch nicht ganz verständlich machen. Ist ja auch ein blödsinniger Wunch von meinem Chef.
Aber, egal, inzwischen habe ich das Problem gelöst.
SELECT ...... UNION SELECT ........ UNION SELECT .......
Vielleicht nicht ganz die optimale Lösung, aber es funktioniert..Vielen dank für die Hilfe
- Als Antwort markiert Ionut DumaModerator Dienstag, 25. Februar 2014 17:01