两个不同的查询“与”

时间:2016-09-19 17:53:57

标签: sql

    WITH RESULT1 AS (
    SELECT
     **B.StartDate - C.StartDate) AS Test**
    FROM
      Project B
    WHERE
      B.FundingAmount > 0
    )
;
    WITH RESULT2 AS (
    SELECT
      C.StartDate
    FROM
      Project C
    WHERE
      C.FundingAmount > 0
    )

我正在努力的部分是星标。这就是我想要做的。从StartDate获取Result1,从StartDate中减去Result2。我该怎么做?

我简化了查询的其余部分,但实质上,Result1和Result2有2个不同的where clasue,它们产生两个不同的结果。我想知道我是否可以按原样保留它并以某种方式相互引用,或者我是否必须完全重写整个事情。

谢谢

2 个答案:

答案 0 :(得分:0)

我相信这会非常接近你想要的,但是因为你在JOINResult2之间没有Project条件,我的代码会产生一个笛卡尔product(两个表/结果中行的所有可能组合)。

如果你知道"平等"在这两组之间的条件,请用这个条件替换我的1=1条件。

WITH RESULT2 AS (
    SELECT
      C.StartDate
    FROM
      Project C
    WHERE
      C.FundingAmount > 0
    )
SELECT Result2.StartDate - P.StartDate
FROM Result2
    INNER JOIN Project P ON 1 = 1
WHERE
    P.FundingAmount > 0

答案 1 :(得分:-1)

在oracle中只是

WITH RESULT1 AS (
SELECT
 **B.StartDate - C.StartDate) AS Test**
FROM
  Project B
WHERE
  B.FundingAmount > 0
),
 RESULT2 AS (
SELECT
  C.StartDate
FROM
  Project C
WHERE
  C.FundingAmount > 0
) 
select * from Result1, Result2 where whatever