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

Summenbildung in abhängigkeit einer anderen Spalte

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von lengulins, 20 April 2012.

  1. lengulins

    lengulins Benutzer

    Hallo,
    habe folgendes Problem. Als Teil einer grossen Abfrage möchte ich in einer Spalte eine Summe abbilden. Dabei wird auf folgende Tabelle zugegriffen
    Auftrag Preis
    #12002 771,55 €
    #12012 2.311,65 €
    #12012 2.311,65 €
    #12200 776,00 €
    #12204 1.113,08 €
    #12207 1.892,10 €
    #12212 48.050,77 €
    #12212 48.050,77 €
    #12243 1.904,00 €
    #12502 172,55 €
    #12512 4.539,85 €
    #12516 1.071,00 €
    #12517 6.247,50 €
    #12519 1.904,00 €
    #12525 1.166,20 €

    Ergebnis 71.920,24 €

    Als Lösung soll die Summe das abgebildete Ergebnis (also die summe aller rechten, weissen Felder) liefern. D.h, ich muss ein Distinct auf die Auftraege machen und im Anschluss summieren.
    Achtung: Ein SUM (DISTINCT Preis) hilft mir nicht weiter, da solche Aufträge wie #12243 und #12519 dann zusammengefasst werden, was nicht passieren darf.)
    Wie stell ich das an?
    Bei meinen Versuchen meine Ergebnisse in meine grosse Abfrage zu stellen, kam die Fehlermeldung:
    Die Unterabfrage hat mehr als einen Wert zurückgegeben. Das ist nicht zulässig, wenn die Unterabfrage auf =, !=, <, <=, > oder >= folgt oder als Ausdruck verwendet wird.
    D.h. es darf wirklich nur die Summe zurückgegeben werden und kein zweiter Wert. Ideen?
    Danke Diana
    ------------------------------------------------------
    Sorry, meine Tabelle war farbig und wurde hier nicht so übernommen. Habe jetzt nochmal nachgeholfen.
     
  2. ukulele

    ukulele Datenbank-Guru

    Wiso musst du ein DISTINCT verwenden wenn du keine Aufträge zusammen fassen willst? Was sind weisse Felder? Wie lautet deine "große" Abfrage? Ich kann ja schlecht aus 2 Tabellen, Auftrag und Preis, ohne Relationen eine sinnvolle Abfrage bilden, die Abfrage oder die Tabellenstruktur müsstest du also posten. Bisher kann ich dir nur sagen das du irgendwo sum(Preis) verwenden musst. Meinst du eine Summe in Form einer Spalte in der Abfrage oder als zusätzliche Zeile unter deiner eigentlichen Abfrage?
     
  3. lengulins

    lengulins Benutzer

    1. Weil ich einen Preis in abhängigkeit vom Auftrag machen will
    2. alle rechten werte, die nicht 'rot' sind. Habe geschrieben, dass meine farbige Tabelle nicht dargestellt wurde.
    3. Meine grosse Abfrage möchten Sie nicht sehen, da verwirre ich hier zu sehr... glauben Sie mir, auch wenn sie Profi sein sollten!!!!!
    4. Es handelt sich nicht um 2 Tabellen, ich möchte aus einer Tabelle ein Aggregat filtern.
    (so, so, sum(preis) muss ich also verwenden. !!!... den Kommentar stell ich hier mal so rein, weil er mich so geaergert hat)
    Ich meinte so was in der Art: SELECT Sum(PR) AS Ergebnis FROM (SELECT DISTINCT Auftrag AS Auf, Preis As Pr FROM Tabelle1) As Test
    als Zwischenselectanweisung in einer anderen Abfrage. Sozusagen nochmal geschachtelt.
     
  4. ukulele

    ukulele Datenbank-Guru

    Code:
    SELECT    sum(preis)
    FROM    (    SELECT    p.nummer_auftrag,
                        max(p.preis) AS preis
                FROM    preise p
                GROUP BY p.nummer_auftrag ) hilfstabelle
     
  5. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    Ich würde mich über ein riesen Select - Stmt (wie groß auch ein "riesen" Stmt ist?) mal freuen! ;-)

    Lg
     
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