7

2 つの非常に単純な SELECT ステートメントがあります。

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

これら 2 つの SQL ステートメントから返される「値」の差を取得する単一の SQL ステートメントを作成する方法が必要です。

次のことを試みましたが、成功しませんでした。

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

どんな提案でも大歓迎です。

4

6 に答える 6

16

テストされていませんが、動作するはずです:

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あなたが単一の値を返すことが保証されていると仮定します

于 2012-09-05T07:42:10.413 に答える
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)
于 2012-09-05T07:27:32.730 に答える
1

以下のステートメントはあなたのケースで機能するはずです

(
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
)
于 2012-09-05T09:44:25.073 に答える
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;
于 2012-09-05T07:48:24.733 に答える
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
)
于 2012-09-05T07:55:08.287 に答える