2016-09-19 57 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