Announcement

Collapse
No announcement yet.

Case & Aggregate

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

  • Case & Aggregate

    Hallo

    ich habe ein Problem mit einer "Wenn / Dann" funktion.

    [HIGHLIGHT=SQL]
    SUM(CASE WHEN (dbo.DINVSALES.item_val_net
    - dbo.DINVSALES.item_val_net
    * dbo.z_bvw_BSLS_GRUNDBASIS_GST.due_perc_1 / 100)
    <> 0 THEN
    AVG(CASE WHEN art_group = 'fpha'
    THEN
    (dbo.z_bsls_zuschlag.Lohnkgpharma
    * dbo.DINVSALES.qty_stock
    * dbo.BARTICLES.vol_net)
    + (dbo.DINVSALES.qty_stock
    * dbo.BARTICLES.vol_net
    * dbo.z_bsls_zuschlag.Bulkkg
    + dbo.z_bsls_zuschlag.AbfüllungSTK
    * dbo.DINVSALES.qty_stock)
    + (dbo.z_bsls_zuschlag.Lohnkg * dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net)
    ELSE
    (dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net * dbo.z_bsls_zuschlag.Bulkkg + dbo.z_bsls_zuschlag.AbfüllungSTK * dbo.DINVSALES.qty_stock)
    + (dbo.z_bsls_zuschlag.Lohnkg * dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net) END)
    / SUM(dbo.DINVSALES.item_val_net - dbo.DINVSALES.item_val_net * dbo.z_bvw_BSLS_GRUNDBASIS_GST.due_perc_1 / 100)
    * 100) end AS LOHNPROZENT[/highlight]



    SQL behauptet immer, das ich keine Aggregatfunktion auf einem Ausdruck machen kann. Nur sehe keine.

    Hat eine eine Idee?

    Vielen Dank im vorraus.

    VG

    Conny
    Zuletzt editiert von cklemm; 28.10.2013, 14:07.

  • #2
    Was siehst Du nicht? Aggregatfunktionen?
    Wie wäre es mit "SUM"?
    An dieser Stelle weise ich mal wieder gerne darauf hin, dass es nicht umsonst die Möglichkeit gibt, auch SQL zu formatieren.
    Das hilft beim Sehen (Erkennen) oft ungemein.
    Gruß, defo

    Comment


    • #3
      Hallo

      vielleicht habe ich mich ja falsche ausgedrückt.
      Ich möchte wenn [
      [HIGHLIGHT=SQL]
      SUM(CASE WHEN (dbo.DINVSALES.item_val_net - dbo.DINVSALES.item_val_net * dbo.z_bvw_BSLS_GRUNDBASIS_GST.due_perc_1 / 100)
      <>0[/highlight]
      mit AVG.... weiter rechnen.

      Nur bringt halt SQL eine Fehlermeldung bzgl. einer Aggregatsfuntkion

      VG

      Conny
      .

      Comment


      • #4
        Auch AVG ist eine Aggregatfunktion. Ohne Fehlermeldung, kann ich auch nichts weiter dazu sagen. Als Hinweis allerdings ein Erfahrungswert:
        Diese Fehlermeldungen sind in der Regel kein Hokuspokus, sondern schlicht Tatsachen.

        Und da es offenbar nicht um eine allgemeine SQL Frage geht, sondern MS SQL Fähigkeiten, musst Du halt schauen, was der Server Dir erlaubt.
        Und der Thread muss vielleicht umsortiert werden.
        Gruß, defo

        Comment


        • #5
          Hallo

          danke erst einmal.

          Die Meldung dich ich bekomme laute:

          Eine Aggregatsfuntion kann auf einem Ausdruck, der eine Aggregat oder eine Unterabfrage enthält, nicht ausgeführt werden.

          VG

          Conny

          Comment


          • #6
            Zitat von http://www.insidesql.org/blogs/fehle...efuehrt-werden
            Beschreibung:
            Diese Fehlermeldung erscheint, wenn man versucht, eine Aggregatfunktion auf einem Aggregat oder eine Unterabfrage auszuführen.

            Auswirkungen:
            Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.

            Behebung:
            Fehler der Ebene 15 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Man kann keine Aggregatfunktion auf einem Aggregat oder einer Unterabfrage ausführen.

            Versionen:
            Alle Versionen von SQL Server.

            Beispiele:
            SELECT
            MIN(SUM(1));

            Anmerkungen:
            Im obigen Beispiel wird versucht, das MIN() Aggregat auf dem SUM() Aggregat auszuführen. Dies löst den Fehler aus.
            Das musst Du wohl umbauen. Vielleicht fehlt nur ein Group By bzw. die Verschachtelung / Klammerung ist nicht ok.
            Gruß, defo

            Comment


            • #7
              Hallo

              das dieses kein Hokuspokus ist mir schon klar.
              Ich habe ja auch eine klare Fehlermeldung gehabt und kommuniziert. Nur fehlte mir die Lösung dafür, obwobl ich seit Tagen an den Skript schraube.
              Deshalb hatte ich gehofft hier etwas zu meinem Lösungsversuch zu erfahren.

              Ist aber auch egal jetzt, da ich die Lösung selbst gefunden habe.

              Trotzdem Danke

              VG

              Conny

              Comment


              • #8
                Tja, die vollständige Fehlermeldung kam in Beitrag 5, vollständiges SQL gab's gar nicht. Was soll man dazu sagen?
                Vielleicht solltest Du Dich noch mal damit auseinandersetzen, wie so ein Forum funktioniert.
                "Ich hab die Lösung allein gefunden und verrate sie auch niemand" ist z.B. auch nicht vorteilhaft.
                Gruß, defo

                Comment

                Working...
                X