我在MS Access中运行此查询非常好!
SELECT
BK_LEVEL9.Aitur AS Aitur,
Sum(BK_LEVEL9.M_NewQty) AS M_NewQty,
Sum(BK_LEVEL9.ErrorCount) AS ErrorCount,
(IIf([M_NewQty]<>0,Round(([ErrorCount]*100)/[M_NewQty],2),0)) AS ErrorProcc
FROM
BK_LEVEL9
GROUP BY
BK_LEVEL9.Aitur;
在我的C#程序中,我尝试像这样运行此查询:
SQL = "SELECT Aitur,M_NewQty,ErrorCount,ErrorProcc from MyQUERY";
dsWorkKabat = new DataSet();
adp = new OleDbDataAdapter(SQL, Conn);
adp.Fill(dsWorkKabat, "MyQUERY");
adp.Dispose();
我收到了这个错误:
您尝试执行的查询不包含指定的表达式'IIf(Not [M_NewQty] = 0,Round([ErrorCount] * 100 / [M_NewQty],2),0)'作为聚合函数的一部分
可能是什么问题?
由于
答案 0 :(得分:1)
对于几乎每个DBMS(MySQL是我唯一知道的例外,但也可能有其他例外),SELECT中未聚合的每一列都需要在GROUP BY子句中。对于您的查询,您需要将其分组:
GROUP BY
BK_LEVEL9.Aitur, IIf([M_NewQty]<>0,Round(([ErrorCount]*100)/[M_NewQty],2),0);