none
Query Abfrage Anzahl Datensätze Pro Tag RRS feed

  • Frage

  • Hallo Ihr Wissenden !!!

    Bin noch ganz neu und bitte um Hilfe.

    In meiner Tabelle habe ich u. a. ein Datetime Feld Namens Zeit.

    Nun kommt es vor, dass an einem Tag 1400 Einträge vorhanden sind. oder
    vielleicht nur 10 oder für diesen Tag gar keine Daten eingetragen wurden.
    Im Feld Zeit ist aber Datum und Zeit gespeichert. Pro Tag ist Datum natürlich
    immer gleich, aber die Zeit eine andere. Maximal 1440 Einträge pro Tag.
    In der Regel kommt jede Minute ein neuer Datensatz dazu.
    Es sei denn es kommt eben keiner....

    Ich such nun eine Query Abfrage die mir die Anzahl der Datensätze für jeden
    Tag anzeigt.

    Beispiel:
    Datum Menge
    01.06.09 15
    02.06.09 1050
    u.s.w

    wenn für einen Tag keine Datensätze vorhanden sind, brauch ich auch
    keine Nullsumme. Der kann einfach in der Liste fehlen.

    Grüße.

    ToBo
    Dienstag, 23. Juni 2009 20:41

Antworten

  • Hallo Tobo,
    entschuldige, da habe ich unbeabsichtigt was anderes kopiert.
    GETDATE() muß jeweils durch die Spalte (Zeit) ersetzt werden, wie Du es bereits getan hast.
    In der gezeigten Form wird das DAtum in eine Zeichenfolge umgewandelt, und danach sortiert.
    Um es als Datum zu sortieren, ist eine weitere Konvertierung erforderlich:
    SELECT CONVERT(datetime, CONVERT(char(8), Zeit, 112)) AS Datum,
    	COUNT(*) AS Menge
    FROM dbo.Tabelle
    GROUP BY CONVERT(datetime, CONVERT(char(8), Zeit, 112))
    ORDER BY Datum
    Gruß Elmar
    • Als Antwort markiert ToBo-fkb Mittwoch, 24. Juni 2009 09:52
    Mittwoch, 24. Juni 2009 09:46
    Beantworter

Alle Antworten

  • Hallo Tobo,

    die Abfrage sähe in etwa so aus:
    SELECT CONVERT(char(10), GETDATE(), 104 ) AS Datum,
        COUNT(*) AS Menge
    FROM dbo.Tabelle
    GROUP BY CONVERT(char(10), GETDATE(), 104 ) 
    Weitere Details zu Datum und Zeit findest Du unter
    Verwenden von Datums- und Zeitdaten

    Gruß Elmar
    Mittwoch, 24. Juni 2009 09:10
    Beantworter
  • Hallo Elmar,

    dankeschön... Aber wo taucht da die Spalte "Zeit" auf, in der die Datetime Daten stehen ?

    Wenn ich das so eingebe bekomme ich nen Fehler

    Server: Nachr.-Nr. 164, Schweregrad 15, Status 1, Zeile 4
    GROUP BY-Ausdrücke müssen auf Spaltennamen verweisen, die in der Auswahlliste auftreten.


    Ich habe folgendes versucht:

    select convert(varchar,Zeit,104) as Datum, count(*) as Menge from Tabelle
    Group by convert(varchar,Zeit,104)
    order by Datum

    Ergebnis sieht gut aus. Die Menge stimmt / Tag. Leider wird es nicht nach Datum komplett,
    sondern nur nach dem Tag sortiert.

    01.01.2009  873
    01.11.2007  720
    01.01.2008  1400
    02.01.2008  30
    u.s.w.

    Mittwoch, 24. Juni 2009 09:16
  • Hallo Tobo,
    entschuldige, da habe ich unbeabsichtigt was anderes kopiert.
    GETDATE() muß jeweils durch die Spalte (Zeit) ersetzt werden, wie Du es bereits getan hast.
    In der gezeigten Form wird das DAtum in eine Zeichenfolge umgewandelt, und danach sortiert.
    Um es als Datum zu sortieren, ist eine weitere Konvertierung erforderlich:
    SELECT CONVERT(datetime, CONVERT(char(8), Zeit, 112)) AS Datum,
    	COUNT(*) AS Menge
    FROM dbo.Tabelle
    GROUP BY CONVERT(datetime, CONVERT(char(8), Zeit, 112))
    ORDER BY Datum
    Gruß Elmar
    • Als Antwort markiert ToBo-fkb Mittwoch, 24. Juni 2009 09:52
    Mittwoch, 24. Juni 2009 09:46
    Beantworter
  • Absolut perfekt...

    Um das selbst zu wissen, brauch ich wohl noch ein Paar Jahre...

    Gruß.

    ToBo
    Mittwoch, 24. Juni 2009 09:51