我在获取SQL语句以正确打开记录集时遇到问题。我收到一个语法错误,说我错过了一个运算符。这是在我在CASE语句中添加以尝试仅获得大于零的数字的平均值之后发生的。下面是我正在构建的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;
如果我取出AVG(CASE WHEN ..),但是我似乎无法使用它,所以我认为这就是问题所在。
我一直试图让这个工作,但找不到有什么问题。如果你看到我的错误,请告诉我。
答案 0 :(得分:0)
请尝试通过从代码中删除此行来替换此行。
AVG(CASE WHEN [t1].[LMP] > 0 THEN (([t1].[MET_Value] / 147000) * [t1].[LMP]) ELSE NULL END) AS Floor0Avg
答案 1 :(得分:0)
AVG(CASE WHEN [t1].[LMP] > 0 THEN ([t1].[MET_Value] / 147000) * [t1].[LMP] ELSE NULL END) AS Floor0Avg
的
AVG(Switch([t1].[LMP] > 0,([t1].[MET_Value]/147000)*[t1].[LMP])) AS Floor0Avg
它似乎正在发挥作用。