none
Select mit GroupBy und Count RRS feed

  • Frage

  • Hallo Experten,

    ich habe eine Tabelle die unter anderen folgende Spalten enthält:

    DateTime von
    int StatistikSchemaDetailID
    int KlientID

    Ich möchte eine Liste mit Anzal Klienten pro Monat (Jahr und Monat) und StatistikSchemaDetailID bekommen, also so:

    Jahr  Monat Statistik  Anzahl_Klienten

     

    2014   1        1            30

    2014   1        2            5

    2014   1        3            15

    2014   2        1            4

    2014   2        2            1

    2014   2        2            20

    Folgendes habe ich versucht, ich bekomme hier aber einen Kompilierfehler bei --> Count(s.Key.KlientID).

        var anzklimon = vwstatTSs
            .GroupBy(s => new { s.Von.Year, s.Von.Month, s.StatistikSchemaDetailID, s.KlientID })
            .Select(s => new { Jahr = s.Key.Year, Monat = s.Key.Month, StatID = s.Key.StatistikSchemaDetailID, AnzKlienten = Count(s.Key.KlientID)})
            .ToList();

    Wie müsste die Abfrage aussehen, damit ich das gewünschte Ergebnis erhalte?

    Grüße

    Siegfried




    Donnerstag, 13. November 2014 18:10

Antworten

  • Hallo Siegfried,

    schau dir mal den Link an. Da wird erklärt wie man Group by und Count verwenden kann. (s.Count() sollte da passen)

    MFG

    Björn


    • Bearbeitet Palin Donnerstag, 13. November 2014 20:38
    • Als Antwort markiert Siegfried Reichmann Donnerstag, 13. November 2014 21:20
    Donnerstag, 13. November 2014 20:38
  • Hallo Björn,

    s.Count() hatte ich schon probiert, hat mir aber jeden einzelnen Klienten gebracht. Ich habe es jetzt noch einmal versucht, und die KlientID vom GroupBy herausgenommen. Jetzt bringt mir s.Count() die korrekte Anzahl der Klienten.

        var anzklimon = vwstatTSs
            .GroupBy(s => new { s.Von.Year, s.Von.Month, s.StatistikSchemaDetailID })
            .Select(s => new { Jahr = s.Key.Year, Monat = s.Key.Month, StatID = s.Key.StatistikSchemaDetailID, AnzKlienten = s.Count() })
            .ToList();
    

    So einfach ist es wenn man es weiß. Vielen Dank für Deinen Hinweis.

    Gruß

    Siegfried

    Donnerstag, 13. November 2014 21:19

Alle Antworten

  • Folgendes habe ich versucht, ich bekomme hier aber einen Kompilierfehler bei --> s.Count(s.Key.KlientID).

    Hallo Siegfried,

    erstens ist das rein .NET / Linq und hat zunächst mal nichts mit dem SQL Server, dem Thema dieses Forums, zu tun.

    Dann wäre es hilfreich, wenn Du uns die exakte Fehlermeldung mitteilen könntest.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Donnerstag, 13. November 2014 18:32
  • Hallo Olaf,

    tut mir leid, wenn es das falsche Forum ist, vielleicht kann jemand den Beitrag an den richtigen Ort verschieben.

    Die Fehlermeldung lautet:

     The name 'Count' does not exist in the current context

    Ich weiß lediglich nicht wie Count hier anzuwenden ist.

    Siegfried


    Donnerstag, 13. November 2014 19:44
  • Hallo Siegfried,

    schau dir mal den Link an. Da wird erklärt wie man Group by und Count verwenden kann. (s.Count() sollte da passen)

    MFG

    Björn


    • Bearbeitet Palin Donnerstag, 13. November 2014 20:38
    • Als Antwort markiert Siegfried Reichmann Donnerstag, 13. November 2014 21:20
    Donnerstag, 13. November 2014 20:38
  • Hallo Björn,

    s.Count() hatte ich schon probiert, hat mir aber jeden einzelnen Klienten gebracht. Ich habe es jetzt noch einmal versucht, und die KlientID vom GroupBy herausgenommen. Jetzt bringt mir s.Count() die korrekte Anzahl der Klienten.

        var anzklimon = vwstatTSs
            .GroupBy(s => new { s.Von.Year, s.Von.Month, s.StatistikSchemaDetailID })
            .Select(s => new { Jahr = s.Key.Year, Monat = s.Key.Month, StatID = s.Key.StatistikSchemaDetailID, AnzKlienten = s.Count() })
            .ToList();
    

    So einfach ist es wenn man es weiß. Vielen Dank für Deinen Hinweis.

    Gruß

    Siegfried

    Donnerstag, 13. November 2014 21:19