2016-03-19 18 views
1

SELECTクエリの結果のSUMが必要です。私はSUMを使用しない場合は、それが私にこの結果を示しています。SQLクエリ - SUM内のSELECT

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

をしかし、私はSUM関数を使用する場合、それは私にエラーを示しています

ORA-00936: missing expression

してください、どのように私はそれを修正することができますか?

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; 

応答

答えて

1

私はアプローチの下だと思うがあなたの期待どおりの結果を与える必要があります -

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); 

重複していないことを確認する必要があります。v (内部クエリで使用されている)evidn_nastaveniテーブルの値がpopis = 'cena_krakorce' and upresneni = evidn_krakorce .poziceであることを示します。

この場合、内部クエリで集計関数(MI​​N/MAX/SUM)を使用する必要があります。

0

のおかげであなたはサブクエリでsum()を置くことによって、あなたの特定の問題を修正することができます:

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

ご回答いただきありがとうございます。しかしそれはそれを修正しない。あなたの解決策は、各行にSUMを問い合わせるクエリです。だから、このように思える: -------- SUM(80) SUM(80) SUM(120) SUM(120) SUM(120) SUM(80) SUM CELKOVA_CENA (150) SUM(80) SUM(150) SUM(120) SUM(150) SUM(120) 。 。 。 結果は同じです。私はすべての価値の合計が必要です。 ご回答いただきありがとうございます。別の考えがありますか? – Kaspy