Announcement

Collapse
No announcement yet.

Unterabfrage mit Summe

Collapse
This is a sticky topic.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Unterabfrage mit Summe

    Hallo an alle,

    ich als SQL (hier Firebird 2.5) Anfänger komme mit einer Unterabfrage nicht weiter.

    Mein Problem ist folgendes:

    Ich habe zwei Tabellen:

    Tabelle 1 - Beleg
    Belegnr Datum Name Wert netto Zustand
    123456 01.11.18 Meier 3000,00 gut
    123457 02.11.18 Schulz 3500,00 schlecht
    123458 03.11.18 Müller 2873,00 gut

    Tabelle 2 - Provision
    Belegnr ProvKAT ProvNetto Provdat
    123456 1 300,00 01.12.18
    123456 10 -300,00 05.12.18
    123457 1 100,00 05.12.18
    123457 1 200,00 05.12.18
    123456 1 200,00 05.12.18
    123458 1 150,00 08.12.18
    123458 10 -150,00 09.12.18
    Belegnr kann hier mehrmals vorkommen!

    Mein Problem ist folgendes

    Ich erstelle eine Abfrage aus Tabelle1 mit bestimmten Kriterien:

    select b.belegnr, b.name, p.ProvNetto from Beleg b, Provision p where b.belegdat between '01.01.2018' and '31.12.2018' and b.Zustand = 'gut'
    Das Ergebnis der Abfrage soll aber noch eine Spalte mit der Summe aller ProvNetto-Werte für die Belegnr enthalten. Dargestellt aber nur, wenn der Wert größer Null ist

    Ergebnis
    Belegnr Name ProvNetto
    123456 Meier 200,00

    Habe ich mich halbwegs verständlich ausgedrückt? Könnte mir jemand helfen?

    Vielen Dank

    Ronin269

  • #2
    Hallo Ronin,

    wenn ich dich richtig verstanden habe, dann sollte es so aussehen:


    SELECT
    b.belegnr,
    b.name,
    p.ProvNetto
    FROM
    Beleg b,
    LEFT JOIN (SELECT belegnr, SUM(ProvNetto) AS ProvNetto FROM Provision WHERE ProvNetto IS NOT NULL GROUP BY belegnr) AS P ON b.belegnr = P.belegnr
    WHERE
    b.belegdat BETWEEN '01.01.2018' AND '31.12.2018'
    AND b.Zustand = 'gut'


    LG
    Sebator

    Comment


    • #3
      Hallo Sebator,

      leider erhalte ich folgende Fehlermeldung:

      Code:
      SQL-Fehler in Schritt 1:
      TA_SQL.SelectQuery: Column does not belong to referenced table.
      Column unknown.
      P.PROVNETTO.
      At line 4, column 3.
      LG Ronin

      Comment


      • #4
        Setze ich PROVISION p noch dahinter, erhalte ich:

        Code:
         SQL-Fehler in Schritt 1:
        TA_SQL.SelectQuery: Undefined name.
        Alias P conflicts with an alias in the same statement.

        Comment


        • #5
          Hallo Ronin,

          dann ist die Firebird Syntax wohl doch etwas anders.
          Ich habe den Alias mal in Anführungszeichen gesetzt.
          Versuch das mal:

          SELECT
          b.belegnr,
          b.name,
          p.ProvNetto
          FROM
          Beleg b,
          LEFT JOIN (SELECT belegnr, SUM(ProvNetto) AS "ProvNetto" FROM Provision WHERE ProvNetto IS NOT NULL GROUP BY belegnr) AS P ON b.belegnr = P.belegnr
          WHERE
          b.belegdat BETWEEN '01.01.2018' AND '31.12.2018'
          AND b.Zustand = 'gut'

          Comment


          • #6
            Hallo Sebator,

            danke! Jetzt klappt es. Ich hatte einen Denkfehler. In p.ProvNetto wird das "ProvNetto" eingefügt. Dann klappt es. (Firebird braucht keine Anführungsstriche.)

            Vielen Dank!

            Comment


            • #7
              Hallo nochmal,

              ich habe noch eine Frage, wie bekomme ich noch eine zusätzliche Spalte aus P (Provision) ins Ergebnis?

              Comment

              Working...
              X