我是 LINQ 的新手,但从我阅读和查找的内容来看,我正在寻找类似GroupBy - Simple 3的内容。问题是我不想按一个小对象进行分组,我想按这些组进行分组并按这些组分隔一个数据透视表(或直接生成它的查询),如下所示:
查询:(我正在使用 Visual Studio 2012,查询 MS Access2010 数据库)
try
{
l.Open();
OleDbCommand cmd = l.CreateCommand();
string transform = "TRANSFORM Max(Ultima_Calibracao) AS MaxUltimaCalib ";
string select = "SELECT Codigo, B_DSC AS Artigo, Marca_ AS Marca, Modelo, N_Serie ";
string from = "FROM APP_Equip_Ult_Prox_Calibracao ";
string where = "WHERE YEAR(Ultima_Calibracao) = " + ano +
" AND [Descrição Serviço] like '" + servico + "' ";
string groupby = "GROUP BY APP_Equip_Ult_Prox_Calibracao.Codigo, APP_Equip_Ult_Prox_Calibracao.B_DSC, " +
"APP_Equip_Ult_Prox_Calibracao.Marca_, APP_Equip_Ult_Prox_Calibracao.Modelo, APP_Equip_Ult_Prox_Calibracao.N_Serie," +
"Year(DateAdd('m',Val([frequência calibração]),[Ultima_Calibracao])) ";
string pivot = "PIVOT Format(Ultima_Calibracao,'yyyy-mm') IN ( '" + ano + "-01','" + ano + "-02','" + ano + "-03','" + ano + "-04','" + ano + "-05','" +
ano + "-06','" + ano + "-07','" + ano + "-08','" + ano + "-09','" + ano + "-10','" + ano + "-11','" + ano + "-12');";
string query = transform + select + from + where + groupby + pivot;
cmd = new OleDbCommand(query, l);
dt = new DataTable();
dt.Load(cmd.ExecuteReader());
l.Close();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("DAO Exception: " + ex.Message);
return null;
}
为了更好地解释自己,我想变成这样:
查询结果按部门分组:
| 身份证 | 说明| 型号 | 部门-- |
| 1 | 项目1 --------| 模型1 | 部门1|
| 3 | 项目3 --------| 模型1 | 部门1|
| 2 | 项目2 --------| 模型1 | 部门2|
| 4 | 项目4 --------| 模型1 | 部门2|
变成这样:
部门 1
| 身份证 | 说明| 型号 |
| 1 | 项目1 --------| 模型1 |
| 3 | 项目3 --------| 模型1 |
部门 2