2012-09-05 14 views
6

から取得した2つの値の差異を取得しますこれらの2つのSQL文から戻されます。ORACLE SQLは、我々は2つの、非常に単純なSELECTステートメントを持つ2つのSELECT文

我々は、次を試してみましたが、それは成功しませんでした:

SELECT value from table where date between DATE1 and DATE2 
minus 
SELECT value from table where date between DATE3 and DATE4 

任意の提案が高く評価されています。

+1

数値の差を求めますか(両方のSELECTが1行しか返さない場合)または、設定された相違(つまり、statement2から返されないstatement1から返されるすべての値)を使用しますか? –

+0

数字の差分が必要 – Sanath

+2

次に、trideceth12の答えに同意する必要があります。 –

答えて

15
未テスト

が、作業をする必要があります:

SELECT 
    (SELECT value from table where date between DATE1 and DATE2) - 
    (SELECT value from table where date between DATE3 and DATE4) 
FROM dual; 

は、あなたの SELECT valueは、単一の値

+0

単一の値がない場合はどうすればよいですか? – BSeitkazin

+1

@Beezy質問者は2つの値の違いを調べることについて尋ねました。選択に2つ以上の値がある場合は、計算に含める予定の値のみを取得するまで条件を追加する必要があります。 – jsj

2
SELECT value FROM TBL WHERE date BETWEEN DATE1 and DATE2 
AND value NOT IN (SELECT value FROM TBL WHERE date BETWEEN DATE3 AND DATE4) 
1

を返すことが保証されると仮定すると、これを試してください:文以下

SET SERVEROUTPUT ON 
DECLARE 
V_FIRST NUMBER := 0; 
V_SECOND NUMBER := 0; 
BEGIN 
    SELECT value into V_FIRST from table where rownum=1 and date between DATE1 and DATE2; 
    SELECT value into V_SECOND from table where rownum=1 and date between DATE3 and DATE4; 

    DBMS_OUTPUT.PUT_LINE (V_FIRST-V_SECOND); 
END; 
1
(
SELECT value from table where date between DATE1 and DATE2 
minus 
SELECT value from table where date between DATE3 and DATE4 
) 
union all 
(
SELECT value from table where date between DATE3 and DATE4 
minus 
SELECT value from table where date between DATE1 and DATE2 
) 
1

翔あなたのケースのためのULD作業が

(
SELECT value from table where date between DATE3 and DATE4 
minus 
SELECT value from table where date between DATE1 and DATE2 
) 
union 
(
SELECT value from table where date between DATE1 and DATE2 
minus 
SELECT value from table where date between DATE3 and DATE4 
) 
2

あなたはあなたの内側のクエリが

デュアルFROM
SELECT 
(SELECT sum(value) from table where date between DATE1 and DATE2) - 
(SELECT sum(value) from table where date between DATE3 and DATE4) as answer 

の下に使用し、複数の値を与えることができると思う場合は、

関連する問題