2016-03-19 14 views
1

Ich brauche SUM von Ergebnissen der SELECT-Abfrage. Wenn ich SUM nicht verwenden, zeigt es mir dieses Ergebnis:SQL Abfrage - SELECT in SUM

 CELKOVA_CENA 
-------------------------------------------------------------------------------- 
80 
80 
120 
120 
120 
80 
150 
80 
150 
120 
150 
120 
. 
. 
. 

Aber wenn ich SUM-Funktion verwenden, es zeigt mir Fehler:

ORA-00936: missing expression

Bitte, wie kann ich es beheben?

SELECT SUM (
    SELECT n.hodnota 
    FROM evidn_nastaveni n 
    WHERE n.popis = 'cena_krakorce' 
    AND 
    n.upresneni = k.pozice) 
    AS celkova_cena 
FROM (
    SELECT oc.clen, oc.oddil 
    FROM evidn_oddily_clenove oc 
    INNER JOIN evidn_oddily o ON oc.oddil = o.id 
    WHERE o.nazev = 'Slalom') 
NATURAL JOIN evidn_krakorce k; 

Vielen Dank für Antworten

Antwort

1

Ich denke, unter Ansatz Ergebnis nach Ihrer Erwartung geben soll -

SELECT SUM(celkova_cena) 
    from (select (SELECT n.hodnota 
        FROM evidn_nastaveni n 
       WHERE n.popis = 'cena_krakorce' 
        AND n.upresneni = k.pozice) AS celkova_cena 
      FROM (SELECT oc.clen, oc.oddil 
        FROM evidn_oddily_clenove oc 
       INNER JOIN evidn_oddily o 
        ON oc.oddil = o.id 
       WHERE o.nazev = 'Slalom') NATURAL 
      JOIN evidn_krakorce k); 

Sie müssen überprüfen, dass Sie keine doppelten v alue in evidn_nastaveni Tabelle (die in der inneren Abfrage verwendet wird) für popis = 'cena_krakorce' and upresneni = evidn_krakorce .pozice.

Wenn ja, dann müssen Sie irgendeine Aggregatfunktion (MIN/MAX/SUM) in der inneren Abfrage verwenden.

0

Sie können Ihr Problem beheben, indem Sie die sum() in der Unterabfrage setzen:

SELECT (SELECT SUM(n.hodnota) 
     FROM evidn_nastaveni n 
     WHERE n.popis = 'cena_krakorce' AND 
       n.upresneni = k.pozice) 
     ) celkova_cena 
FROM . . . 
+0

danke für Ihre Antwort. Aber es repariert es nicht. Ihre Lösung sorgt dafür, dass eine Abfrage in jeder der Zeilen SUMME erstellt. So scheint es wie folgt aus: CELKOVA_CENA -------- SUM (80) SUM (80) SUM (120) SUM (120) SUM (120) SUM (80) SUM (150) SUM (80) SUM (150) SUM (120) SUM (150) SUM (120) . . . Das Ergebnis ist das gleiche. Ich brauche alle Werte zusammen zu addieren. Aber danke für Ihre Antwort. Hast du noch eine Idee? – Kaspy