2016-09-02 13 views
-2

レコードセットを正しく開くためのSQL文の取得に問題があります。私は、演算子を紛失しているという構文エラーを受け取りました。これは、CASE文を追加してゼロより大きい数値だけの平均を取得しようとした後に発生しました。以下は、私はどこつまり想定しています(.. CASE WHEN)私はAVGを取る場合、これは動作しますVBA SQL構文エラーにアクセスする(オペレータが見つかりません)

SELECT AVG (([t1].[MET_Value]/147000) * [t1].[LMP]) AS RW, 
        COUNT ([t1].[MetTime]) AS METcnt, 
        AVG ([t1].[MET_Value]/147000) AS AvgCF, 
        AVG(CASE WHEN [t1].[LMP] > 0 THEN ([t1].[MET_Value]/147000) * [t1].[LMP] ELSE NULL END) AS Floor0Avg 
     FROM 
      (SELECT [Data].[Local_Datetime], 
        [Data].[Node_ID], 
        [Data].[LMP], 
        [Data].[5810] AS MET_Value, 
        [MetData].[Local_Datetime] AS MetTime 
      FROM [Data] INNER JOIN 
        [MetData] ON [Data].[Local_Datetime] LIKE [MetData].[Local_Datetime] 
      WHERE [Node_ID] = 746200 AND [LMP] <> -999999 AND [Data].[Local_Datetime] BETWEEN #9/2/2015# AND #9/1/2016#) 
     as t1 GROUP BY Node_ID; 

を構築していますSQLの文字列ですが、私はそれはそれで仕事を得るように見えることはできません問題は。

私はこれを動作させようとしてきましたが、間違っているものは見つけられませんでした。私のエラーが表示されたら教えてください。

答えて

0

コードから削除して作業している場合は、この行を置き換えてみてください。

AVG(CASE WHEN [t1].[LMP] > 0 THEN (([t1].[MET_Value]/147000) * [t1].[LMP]) ELSE NULL END) AS Floor0Avg 
+0

「Case」はMS Accessでは使用できません。あなたは 'Switch'を使う必要があります –

0

Ryan W got it。 は

AVG(Switch([t1].[LMP] > 0,([t1].[MET_Value]/147000)*[t1].[LMP])) AS Floor0Avg 

ため

AVG(CASE WHEN [t1].[LMP] > 0 THEN ([t1].[MET_Value]/147000) * [t1].[LMP] ELSE NULL END) AS Floor0Avg 

をスワップし、それが働いているように見えます。

関連する問題