Announcement

Collapse
No announcement yet.

Fehlendes Datum anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehlendes Datum anzeigen

    Hallo,

    ich stehe zur Zeit vor einem Problem, welches ich seit Tagen nicht lösen kann.

    Ich habe eine Telefonanlage, in welcher jeder Anruf eingetragen wird. Diese Anrufe sollen gezählt werden und die Anzahl der Anrufe pro Tag ausgegeben. Leider gibt es Tage, an denen es 0 Anrufe gab und somit hat die Datenbank keine Einträge an dem Tag. Wie stelle ich es an, diesen Tag trotzdem anzuzeigen?

    Habe versucht eine Tabelle zu inner joinen, welche als Kalender diente und jeden Tag des Monats beinhaltete.
    Habe es mit ISNULL an verschiedenen Stellen probiert.
    Habe es mit case when an verschiedenen Stellen probiert.

    Habe einfach keine Idee mehr.

    Hier die Abfrage (Nur ein kleiner Teil des Originals)

    [highlight= sql]SELECT q.Datum,
    angebotene AS Empfangen
    FROM
    (SELECT
    CONVERT(date, callstart2, 104) as Datum,
    SUM(CASE WHEN calltypekey > 0 THEN 1 ELSE 0 END) AS [angebotene]
    FROM
    (SELECT *, DATEADD(minute, sitetzoffset, callstart) AS callstart2
    FROM dbo.callrecord) AS w
    WHERE
    (YEAR(callstart2) = YEAR(GETDATE()))
    and (MONTH(callstart2) = MONTH(GETDATE()))
    and (origdestination = '4951254952368')
    GROUP BY CONVERT(date, callstart2, 104)) AS q
    order by Datum[/highlight]

    Hier das Ergebnis. Dort fehlt z.B. der 20.09.2014. Soll aber erscheinen und zwar mit 0 unter Empfangen

    ergebnis.jpg


    Vielen Dank
    Schöne Grüße
    Zuletzt editiert von dudas; 23.09.2014, 16:00.

  • #2
    Habe versucht eine Tabelle zu inner joinen, welche als Kalender diente und jeden Tag des Monats beinhaltete.
    Bis auf das es natürlich ein outer join sein sollte eigentlich die richtige Denkrichtung.

    [HIGHLIGHT=SQL]
    WITH DatesOfLastYear AS
    (
    SELECT CAST(GETDATE() as date) as Datum
    UNION ALL
    SELECT DATEADD(dd, -1, Datum)
    FROM DatesOfLastYear
    WHERE Datum > DATEADD(yy, -1, GETDATE())
    )

    SELECT d.Datum, m.Empfangen
    FROM DatesOfLastYear d
    LEFT JOIN DeineBisherigeAbfrage m ON m.Datum = d.Datum
    OPTION (MAXRECURSION 500)
    [/HIGHLIGHT]

    Comment


    • #3
      Genial, danke. Habe zwar noch nicht verstanden wie es funktioniert, aber es funktionier. Danke!
      Also da fehlt noch ein AS vor m ON m.Datum = d.Datum

      Comment

      Working...
      X