0

MS ACCESS には、qselSumPastDivs_vd が 1 つの値を取得するため、0 のデータを取得し、1 つの値を取得する必要がある次のステートメントがあります。

SELECT tblTrades.Tick, 
   IIf([tblTrades].[vd_off]>Now(), [qselSumPastDivs_vd].[SumOfBBG_Div_Forecast],
                                   [qselSumOfPastDivs].[SumOfBBG_Div_Forecast]) AS Expr1
FROM ((tblBbgDivData INNER JOIN 
      tblTrades ON tblBbgDivData.Tick = tblTrades.Tick) INNER JOIN 
      qselSumOfPastDivs ON tblTrades.Tick = qselSumOfPastDivs.Tick) INNER JOIN 
      qselSumPastDivs_vd ON tblTrades.Tick = qselSumPastDivs_vd.Tick
GROUP BY tblTrades.Tick, 
         IIf([tblTrades].[vd_off]>Now(), [qselSumPastDivs_vd].[SumOfBBG_Div_Forecast],
                                         [qselSumOfPastDivs].[SumOfBBG_Div_Forecast]);

問題を引き起こしているのは関節ですか?

IIF ステートメントの [] を削除しましたが、明らかに、MS ACCESS では複数の INNER JOIN に () が必要です。まだデータがありません...

SELECT tblTrades.Tick, IIf(tblTrades.vd_off>Now(),qselSumPastDivs_vd.SumOfBBG_Div_Forecast,qselSumOfPastDivs.SumOfBBG_Div_Forecast) AS Expr1
FROM ((tblBbgDivData INNER JOIN tblTrades ON tblBbgDivData.Tick = tblTrades.Tick) INNER JOIN qselSumOfPastDivs ON tblTrades.Tick = qselSumOfPastDivs.Tick) INNER JOIN qselSumPastDivs_vd ON tblTrades.Tick = qselSumPastDivs_vd.Tick
GROUP BY tblTrades.Tick, IIf(tblTrades.vd_off>Now(),qselSumPastDivs_vd.SumOfBBG_Div_Forecast,qselSumOfPastDivs.SumOfBBG_Div_Forecast);
4

1 に答える 1

1

JOIN を INNER JOIN から LEFT JOIN に変更すると、次のようになりました。

SELECT tblTrades.Tick, IIf([tblTrades].[vd_off]>Now(),[qselSumPastDivs_vd].[SumOfBBG_Div_Forecast],[qselSumOfPastDivs].[SumOfBBG_Div_Forecast]) AS DivLevel2
FROM ((tblTrades INNER JOIN tblBbgDivData ON tblTrades.Tick = tblBbgDivData.Tick) LEFT JOIN qselSumOfPastDivs ON tblTrades.Tick = qselSumOfPastDivs.Tick) LEFT JOIN qselSumPastDivs_vd ON tblTrades.Tick = qselSumPastDivs_vd.Tick
GROUP BY tblTrades.Tick, IIf([tblTrades].[vd_off]>Now(),[qselSumPastDivs_vd].[SumOfBBG_Div_Forecast],[qselSumOfPastDivs].[SumOfBBG_Div_Forecast]);
于 2013-11-27T16:38:38.977 に答える