none
Pro Monat ein Datensatz RRS feed

  • 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

    Mittwoch, 19. Februar 2014 10:20

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

    Mittwoch, 19. Februar 2014 16: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]

    Mittwoch, 19. Februar 2014 11:17
  • 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.2014

    Nun 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 2014

    Der Januar 2014 muss zwei mal ausgegeben, weil zwei Datensätze vorhanden sind.

    Mittwoch, 19. Februar 2014 13:43
  • 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]

    Mittwoch, 19. Februar 2014 14:10
  • 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

    Mittwoch, 19. Februar 2014 16:01