2017-05-10 13 views
0

2つの選択クエリから結果を取得する必要があります。ここで、2つ目のクエリ結果は最初のクエリ結果に条件付けられます。いくつかの条件で2つの選択クエリ結果を結合する

Table 1: tbl1 
EndDate  PEL FL 
4/24/2015  2 4 
6/12/2015  3 5 
8/9/2015  4 7 



    Table 2 : tbl2 
    EndDate  CumEL CumFL 
    3/20/2015  3  6 
    4/10/2015  2  9 
    4/15/2015  1  2 
    5/10/2015  4  1 
    5/21/2015  5  5 
    6/12/2015  8  7 
    6/15/2015  1  2 
    7/6/2015  4  1 
    7/11/2015  5  5 
    8/9/2015  8  7 

私は以下の基準にこれらの二つのテーブルに参加したい:

Select tbl1.* from tbl1 
JOIN 
Select Sum(CumEL),Sum(CumFL) from tbl2 where tbl2.EndDate <= tbl1.EndDate 

所望の出力:

EndDate  PEL FL CumEL CumFL 
4/24/2015 2 4  6  17 
6/12/2015 3 5  23  30 
8/9/2015  4 7  41  45 

答えて

1

一つの方法は、参加しても(適用クロスを使用することです希望も仕事、ちょっと複雑になる):

SELECT tbl1.EndDate, tbl1.PEL, tbl1.FL, C.CumEL, C.CumFL 
FROM tbl1 
CROSS APPLY 
(
    SELECT SUM(CumEL) AS CumEL, SUM(CumFL) AS CumFL 
    FROM tbl2 
    WHERE tbl2.EndDate <= tbl1.EndDate 
) AS C; 
+0

ようleft joinを使用することができます。ありがとう。 – vivek

1

私は前にそれを使用するが、私の心にストライキをdid'tたこの

select tbl1.EndDate, tbl1.PEL, tbl1.FL, 
     SUM(Coalesce(tbl2.CumEL,0) as CumEL, 
     SUM(Coalesce(tbl2.CumFL,0)) as CumFL, 
from tbl1 
left join tbl1 on tbl1.EndDate >= tbl2.EndDate 
group by tbl1.EndDate, tbl1.PEL, tbl1.FL 
関連する問題