2016-09-19 82 views
-1
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 
    ) 

我正在努力的部分是星号线。这就是我想要做的。从Result1StartDate,从Result2减去StartDate。我将如何做到这一点?两个不同的查询“与”

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

谢谢

+2

这两组之间的关系是什么?是否有您希望用于匹配两个结果集中的行的项目ID列? –

+0

你使用的是什么rdbms? result1和result2如何加入/连接/关联?告诉我们你试过了什么,发生了哪些错误?提供样本数据和预期结果。 – swe

回答

-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 
0

我相信这将是非常接近你想要什么,而是因为你没有Result2Project之间的JOIN条件我代码将生成笛卡尔积(两个表/结果中所有行的可能组合)。

如果您知道这两组之间的“相等”条件,请将该条件替换为我的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