[英]ORACLE SQL get difference of two values retrieved from 2 select statements
我们有 2 个非常简单的 SELECT 语句:
SELECT value from table where date between DATE1 and DATE2
SELECT value from table where date between DATE3 and DATE4
我们需要一种编写单个 SQL 语句的方法,该语句将获取从这两个 SQL 语句返回的“值”的差异。
我们尝试了以下方法,但没有成功:
SELECT value from table where date between DATE1 and DATE2
minus
SELECT value from table where date between DATE3 and DATE4
任何建议都受到高度赞赏。
未经测试但应该可以工作:
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
保证返回单个值
SELECT value FROM TBL WHERE date BETWEEN DATE1 and DATE2
AND value NOT IN (SELECT value FROM TBL WHERE date BETWEEN DATE3 AND DATE4)
如果您认为您的内部查询可以提供多个值,请在下面使用
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
FROM dual;
请试试这个:
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;
(
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
)
以下声明应该适用于您的情况
(
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
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.