Probleme mit Group und Sum

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit Group und Sum

    Ich habe folgendes Problem:

    Code:
    SELECT Sum(qry_Positionen2Auftrag.VKBrutto) AS SummevonVKBrutto, 
     Sum(qry_Positionen2Auftrag.MatEK) AS SummevonMatEK,
     Avg(qry_Positionen2Auftrag.Aufschlag) AS MittelwertvonAufschlag,
     qry_Positionen2Auftrag.ArtMatch1,
     qry_Positionen2Auftrag.ArtNr, FROM qry_Positionen2Auftrag
    where (((qry_Positionen2Auftrag.Date) Between [DATUM] And [DATUM]))
    GROUP BY qry_Positionen2Auftrag.ArtMatch1, qry_Positionen2Auftrag.ArtNr,
     Sum(qry_Positionen2Auftrag.VKBrutto)
    funktioniert natürlich nicht, da Sum in Group nicht erlaubt ist.
    Benutze Ich aber das Alias, also

    Code:
    SELECT Sum(qry_Positionen2Auftrag.VKBrutto) AS SummevonVKBrutto,
     Sum(qry_Positionen2Auftrag.MatEK) AS SummevonMatEK,
     Avg(qry_Positionen2Auftrag.Aufschlag) AS MittelwertvonAufschlag,
     qry_Positionen2Auftrag.ArtMatch1,
     qry_Positionen2Auftrag.ArtNr, FROM qry_Positionen2Auftrag
    where (((qry_Positionen2Auftrag.Date) Between [DATUM] And [DATUM]))
    GROUP BY qry_Positionen2Auftrag.ArtMatch1,
     qry_Positionen2Auftrag.ArtNr, SummevonVKBrutto
    bekomme ich die Meldung: "Sie wollen eine Abfrage ausführen,
    die den angegebenen Ausdruck
    "SummevonVKBrutto" nicht als Teil der Aggregatfunktion einschließt."

    ich brauch aber die anderen selektierten Daten alle normal,
    um sie später in dem Bericht sehen zu können.

    Jemand der mir das vielleicht nen Tipp geben kann?
    Zuletzt geändert von Lylantiel; 20.05.2010, 13:43.

  • #2
    Hallo und willkommen im Forum,

    bitte Regeln lesen und Beitrag mit dem Ändern-Button anpassen. Um was für ein DBMS handelt es sich?

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hoffe du meintest bei den Regeln nur wegen des Zeilenumbrauchs,
      oder steh ich auf dem Schlauch wie immer??

      dbms ist Access 07

      Kommentar


      • #4
        Deine schnelle Antwort sagt mir, dass du die Regeln nicht lesen wolltest, daher will ich auch nicht auf dein Problem eingehen.

        Zeilenumbrüche im Code sind keine schlechte Idee, Code-Tags auch nicht.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Ja, tut mir leid, bin etwas unentspannd, weil ich schon seit Stunden versuche das zu lösen und noch nicht einen Schritt weiter bin.

          Also noch ein Versuch meinerseits

          Kommentar


          • #6
            Ok, den ersten Fehler hab ich gefunden.
            Da hing leider nocht etwas hintendran an der Selection, dass da nicht hingehörte,
            deswegen der Fehler mit der Aggregatfunktion. Jetzt sieht es wirklich so aus:

            Code:
            SELECT Sum(qry_Positionen2Auftrag.VKBrutto) AS SummevonVKBrutto, 
             Sum(qry_Positionen2Auftrag.MatEK) AS SummevonMatEK, 
             Avg(qry_Positionen2Auftrag.Aufschlag) AS MittelwertvonAufschlag, 
             qry_Positionen2Auftrag.ArtMatch1, qry_Positionen2Auftrag.ArtNr, 
             qry_Positionen2Auftrag.SummevonBruttoVK FROM qry_Positionen2Auftrag
            where (((qry_Positionen2Auftrag.Date) Between [DATUM] And [DATUM]))
            GROUP BY SummevonVKBrutto, qry_Positionen2Auftrag.ArtMatch1,
             qry_Positionen2Auftrag.ArtNr
            Beim Ausfüren mit MS Access 2007 bekomme ich aber nun ein
            Eingabefenster mit der Bezeichnung "SummevonVKBrutto",
            was leider auch nicht das gewünschte Resultat ist.

            Kommentar


            • #7
              Die Summe der Gruppe kann man nicht selbst zum Gruppieren verwenden, das wäre ja dann schon wieder eine neue Gruppierung.

              Versuch mal, das was du eigentlich vor hast, mit Worten zu beschreiben, aber so detailliert, das man es gut nachvollziehen kann.
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                Ok Ziel des ganzen ist es, dass in dem Bericht hinterher
                zuerst nach der "SummevonVKBrutto" sortiert wird, damit ich
                sehen kann, von welcher Warengruppe im entsprechenden Zeitraum
                es den grössten Umsatz gibt.

                Dann sollen die einzelnen Artikel der Gruppe alphabetisch sortiert werden
                und zuguterletzt soll die Summe noch einmal unten zusammengezählt werden.

                PS: irgendwie lässt sich das auch in Worten nicht einfach beschreiben.

                Kommentar


                • #9
                  Dann musst du aber nach Warengruppe gruppieren, sonst wird das gar nichts. Sortieren ist ja dann was anderes. Das Zusammenzählen geht nur, wenn das DBMS die WITH ROLLUP Klausel unterstützt, sonst musst du es im Script machen.
                  Zuletzt geändert von AmicaNoctis; 20.05.2010, 14:19.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Hmm WITH ROLLUP hab ich noch nie gehört...

                    qry_Positionen2Auftrag.ArtMatch1 ist in diesem Fall die Warengruppe,
                    und diese Warengruppen sollen eben nach der Summe ihres Umsatzes
                    sortiert werden und dann eigentlich erst nach Ihrem Namen.

                    Und ne Vorsortierung nach dem Umsatz ist leider nicht möglich, weil das
                    [DATUM] im where-Teil ja dynamisch ist.

                    Kommentar


                    • #11
                      Kann es sein, dass du Probleme mit dem Unterschied zw. group by und order by hast?
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #12
                        Sein kann es bestimmt.
                        Hab aber Order By auch schon versucht, was aber
                        leider zu dem selben Fehler führt, nämlich, dass "SummevonVKBrutto" ein
                        Eingabefenster erzeugt, und nicht nach der vorher definierten Summe sortiert wird.

                        Also auch Versuche wie:

                        Code:
                        GROUP BY qry_Positionen2Auftrag.ArtMatch1, qry_Positionen2Auftrag.ArtNr
                        ORDER BY SummevonVKBrutto
                        oder ähnliches
                        Zuletzt geändert von Lylantiel; 20.05.2010, 14:47.

                        Kommentar


                        • #13
                          Zitat von Lylantiel Beitrag anzeigen
                          was aber
                          leider zu dem selben Fehler führt
                          Das liegt aber bestimmt an etwas anderem. Zeig das mal her (im Ganzen).
                          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                          Super, danke!
                          [/COLOR]

                          Kommentar


                          • #14
                            Code:
                            SELECT Sum(qry_Positionen2Auftrag.VKBrutto) AS SummevonVKBrutto,
                             Sum(qry_Positionen2Auftrag.MatEK) AS SummevonMatEK,
                             Avg(qry_Positionen2Auftrag.Aufschlag) AS MittelwertvonAufschlag,
                             qry_Positionen2Auftrag.ArtMatch1, qry_Positionen2Auftrag.ArtNr,
                             qry_Positionen2Auftrag.SummevonBruttoVK FROM qry_Positionen2Auftrag 
                            where (((qry_Positionen2Auftrag.Date) Between [DATUM] And [DATUM]))"
                            GROUP BY qry_Positionen2Auftrag.ArtMatch1, 
                             qry_Positionen2Auftrag.ArtNr
                            ORDER BY SummevonVKBrutto

                            Kommentar


                            • #15
                              Wo kommt das Anführungszeichen her? Liegt es daran?

                              Hast du es zum Testen mal mit festen Daten statt der Platzhalter versucht? Wenn es dann nicht klappt, weiß ich auch nicht mehr… Dann brauchst du ein ordentliches DBMS.
                              Zuletzt geändert von AmicaNoctis; 20.05.2010, 15:07.
                              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                              Super, danke!
                              [/COLOR]

                              Kommentar

                              Lädt...
                              X