Announcement

Collapse
No announcement yet.

In Tabelle Group By und summieren

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

  • In Tabelle Group By und summieren

    Hallo,

    ich habe hier ein ziemlich komplizierte Anforderung und bin mir nicht sicher ob sich das in einem einzelnen Query abbilden lässt (Ein Umweg über eine Zwischentabelle die mit insert gefüllt wird ist leider ausgenommen).

    Ich habe die folgende Tabellenstruktur:
    Code:
    id           date_requested           date_completed
    1            20090130                  20090130
    2            20090130                  20090201
    3            20090201                  20090202
    Nun brauch ich eine Ausgabe in der Form:
    Code:
    date               count_requested    count_completed
    20090130      2                           1
    20090201      1                           1
    20090202      0                           1
    Ich habe es schon mit extra selects versucht, die ich dann mit union all kombiniert habe etc. aber bei einem union überschreibt er mir immer eine Spalte mit einem Wert den ich definieren muss, damit die Spaltenanzahl gleich ist.

    Hat hier einer eine Idee, wie man das lösen könnte?
    (selects und das Anlegen einer View wäre möglich, es kann allerdings dann immer nur ein query abgeschickt werden um an das Ergebnis zu kommen)

    Danke schonmal,
    Matthias

  • #2
    Hallo Matthias,

    Umwege oder Zwischentabellen sind nicht nötig, das kann man auch so selektieren.
    Eine Möglichkeit wäre folgende:
    [highlight=SQL]CREATE TABLE #Dummy
    ([id] int, date_requested int,
    date_completed int);

    INSERT INTO #Dummy VALUES (1, 20090130, 20090130);
    INSERT INTO #Dummy VALUES (2, 20090130, 20090201);
    INSERT INTO #Dummy VALUES (3, 20090201, 20090202);



    SELECT Datum, SUM(Requested) AS CountReq,
    SUM(Completed) AS CountComp
    FROM
    (SELECT date_requested AS Datum,
    1 AS Requested, 0 AS Completed
    FROM #Dummy
    UNION ALL
    SELECT date_completed AS Datum,
    0 AS Requested, 1 AS Completed
    FROM #Dummy) AS SUB
    GROUP BY Datum

    GO
    DROP TABLE #Dummy[/highlight]
    Nur eine der Möglichkeiten, es gibt durchaus noch weitere.

    Die hier bewertet jeden Datensatz 2mal pro Datum, ob es Req oder Com wurde mit je 1; das wird dann pro Datum summiert = Gesamtanzahl.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Hallo Olaf,

      vielen Dank, damit klappt es wunderbar!

      Comment

      Working...
      X