Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

SQL Wert vergleichen mit Summe

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Testsql457, 6 Juni 2017.

  1. Testsql457

    Testsql457 Neuer Benutzer

    Brauche Hilfe bei folgender SQL-Abfrage:

    es sollen nur die Zeilen angezeigt werden, bei denen die Summe kleiner ist als k.Menge

    SELECT ka.AUFTRAG, k.AUFPOS, k. MENGE , SUM(CASE WHEN p.STATUS_QS IN('','F') THEN p.MENGE_GES ELSE 0 END) As Sum_Menge
    FROM KAVV000 AS ka
    LEFT OUTER JOIN PRMD000 AS p ON ka. AUFTRAG = p.AUFTRAG
    RIGHT OUTER JOIN KAVV0101 AS k ON ka.AUFTRAG = k.AUFTRAG
    INNER JOIN MATD010 AS m ON p.ARTIKEL = m.ARTIKEL
    WHERE ka.GESCH_BER NOT LIKE '9%'
    AND m.MERKMALGRP = 'GUSSTEIL'
    AND p.AUFPOS = k.AUFPOS
    AND p.STRU_EBENE = 1
    AND p.FK_STKL = 'F'
    GROUP BY ka.AUFTRAG, k.AUFPOS, K.MENGE, p.MENGE_GES
    HAVING k.MENGE <> Sum_Menge

    Ich bekomme hier immer die Fehlermeldung, dass die Spalte Sum_Menge nicht existiert.
    Wie kann ich eine Menge mit einer bestimmten Summe von p.Menge_GES vergleichen ? Hat jemand eine Idee ?
     
  2. drdimitri

    drdimitri Datenbank-Guru

    Code:
    SELECT * FROM
      (SELECT ka.AUFTRAG, k.AUFPOS, k. MENGE , SUM(CASE WHEN p.STATUS_QS IN('','F') THEN p.MENGE_GES ELSE 0 END) As Sum_Menge
      FROM KAVV000 AS ka
      LEFT OUTER JOIN PRMD000 AS p ON ka. AUFTRAG = p.AUFTRAG
      RIGHT OUTER JOIN KAVV0101 AS k ON ka.AUFTRAG = k.AUFTRAG
      INNER JOIN MATD010 AS m ON p.ARTIKEL = m.ARTIKEL
      WHERE ka.GESCH_BER NOT LIKE '9%'
      AND m.MERKMALGRP = 'GUSSTEIL'
      AND p.AUFPOS = k.AUFPOS
      AND p.STRU_EBENE = 1
      AND p.FK_STKL = 'F'
      GROUP BY ka.AUFTRAG, k.AUFPOS, K.MENGE, p.MENGE_GES)
      WHERE menge<>sum_menge
     
  3. Testsql457

    Testsql457 Neuer Benutzer

    Also noch ein WHERE geht nicht nach dem HAVING - falsche Syntax
     
  4. Testsql457

    Testsql457 Neuer Benutzer

    ...und als Bedingung ins WHERE mit AND anhängen geht auch nicht, weil Spalte existiert nicht...
     
  5. ukulele

    ukulele Datenbank-Guru

    Ohne mir das jetzt groß angeguckt zu haben, hast du mal deinen Alias Sum_Menge durch die eigentliche CASE-Anweisung ersetzt?
    Code:
    SUM(CASE WHEN p.STATUS_QS IN('','F') THEN p.MENGE_GES ELSE 0 END)
    Das ist ja eigentlich die Spalte auf die sich dein HAVING bezieht.
     
  6. Testsql457

    Testsql457 Neuer Benutzer

    Nein, sorry - funktionierte schon mit dem Tipp von drdimitri, nur dass der Alias fehlte.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden