-1

私は次のSQLを持っています:

SELECT tab4.IRSpot as IRSpot, tab4.IRVol AS MaxPlauShift, tab4.VegElement AS MaxPlauLoss FROM
    (SELECT tab1.IRSpot, MIN(tab1.VegaElement*Probability) AS PlausibleLoss FROM
        (SELECT IRSpot, IRVol, VegaElement 
        FROM SEL_VegaElementMatrix()) tab1
    JOIN
        (SELECT IRSpot, IRVol, Probability 
        FROM Table_Name_2) tab2
    ON tab1.IRSpot = tab2.IRSpot AND tab1.IRVol = tab2.IRVol
    GROUP BY tab1.IRSpot) tab3
JOIN
    (SELECT IRSpot, IRVol, VegaElement 
    FROM SEL_VegaElementMatrix()) tab4
ON tab3.PlausibleLoss = tab4.VegaElement AND tab3.IRSpot = tab4.IRSpot

tab3 は行 {2,0} を返し、tab4 は多くの行を返します。そのうちの 8 行には同じ値 {2,0} が含まれています。

JOIN を実行しているため、結合によって 8 行の結果が返されることを期待していますが、1 つの結果行しか返されませんか?

4

1 に答える 1

2

それを RIGHT JOIN に変更して、一致しないものを見つけます。INNER JOIN は、両方のテーブルで一致が見つかった行のみを表示します。最後の where/on 句にあるのではないかと思いますが、テーブルの構造とデータを見ないとわかりません。

SELECT tab4.IRSpot as IRSpot, tab4.IRVol AS MaxPlauShift, tab4.VegElement AS MaxPlauLoss FROM 
    (SELECT tab1.IRSpot, MIN(tab1.VegaElement*Probability) AS PlausibleLoss FROM 
        (SELECT IRSpot, IRVol, VegaElement  
        FROM SEL_VegaElementMatrix()) tab1 
    JOIN 
        (SELECT IRSpot, IRVol, Probability  
        FROM Table_Name_2) tab2 
    ON tab1.IRSpot = tab2.IRSpot AND tab1.IRVol = tab2.IRVol 
    GROUP BY tab1.IRSpot) tab3 
RIGHT JOIN 
    (SELECT IRSpot, IRVol, VegaElement  
    FROM SEL_VegaElementMatrix()) tab4 
ON tab3.PlausibleLoss = tab4.VegaElement AND tab3.IRSpot = tab4.IRSpot 
于 2012-05-28T15:49:30.153 に答える