因此,我正在使用MS Access 2010数据库在C#中使用Visual Studio 2012,并希望根据某些限制(在WHERE子句中看到的那些)对表的某些数据进行年度规划。 我从Access获得了这个查询,并且很好地准备好在我的C#程序中使用,然后偶然发现了我无法使用它的问题,因为它不是“有效的SQL指令”
OleDbConnection l = OleDbConnectionDAO.createConnection();
DataTable dt;
l.Open();
OleDbCommand cmd = l.CreateCommand();
string transform = "TRANSFORM Max( IIf([frequência calibração] Is Not Null,(Format(DateAdd('m',Val([frequência calibração]),[Data Saida]),'yyyy/mm')),'Faltam dados')) AS MaxProximaCalib";
string select = "SELECT Codigo, B_DSC AS Artigo, Marca_ AS Marca, Modelo, N_Serie";
string from = "FROM APP_Equipamento_Geral";
string where = "WHERE YEAR(DateAdd('m',Val([frequência calibração]),[Data Saida])) = " + ano + " AND [Descrição Serviço] like "+servico+ "";
string groupby = "GROUP BY APP_Equipamento_Geral.Codigo, APP_Equipamento_Geral.B_DSC, APP_Equipamento_Geral.Marca_," +
"APP_Equipamento_Geral.Modelo, APP_Equipamento_Geral.N_Serie, Year(DateAdd('m',Val([frequência calibração]),[Data Saida]))";
string pivot = "PIVOT IIf([frequência calibração] Is Not Null,(Format(DateAdd('m',Val([frequência calibração]),[Data Saida]),'yyyy/mm')),'Faltam dados');";
string query = transform + select + from + where + groupby + pivot;
cmd = new OleDbCommand(query, l);
dt = new DataTable();
dt.Load(cmd.ExecuteReader());
是否有更简单的方法来运行此查询而无需遍及this?
编辑:TRANSFORM已添加。