使用C#中WHERE子句的动态限制创建数据透视表查询

时间:2013-11-06 15:27:58

标签: c# sql ms-access-2010

因此,我正在使用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已添加。

0 个答案:

没有答案