在C#中进行数据纵向不定行转横向列,多条信息成一行,例如员工薪资信息
2012-10-24 08:54
459 查看
DataTable dt = Maticsoft.DBUtility.DbHelperOra.Query(QuerySql).Tables[0]; //DT的数据如下图所示 string CoverID = dt.Rows.Count > 0 ? dt.Rows[0]["CoverID"].ToString() : ""; #region 创建新的DataTable DataTable dtShow = new DataTable(); dtShow.Columns.Add("序号", Type.GetType("System.String")); dtShow.Columns.Add("部门", Type.GetType("System.String")); dtShow.Columns.Add("编号", Type.GetType("System.String")); dtShow.Columns.Add("姓名", Type.GetType("System.String")); dtShow.Columns.Add("职务", Type.GetType("System.String")); dtShow.Columns.Add("期间", Type.GetType("System.String")); dtShow.Columns.Add("开始日期", Type.GetType("System.String")); dtShow.Columns.Add("结束日期", Type.GetType("System.String")); DataTable dtCover = Maticsoft.DBUtility.DbHelperOra.Query("select a.*,b.itemname from sa_accountci a left join sa_accountcoveritems b on a.itemid=b.itemid where a.coverid='" + CoverID + "' order by a.itemsortflag ").Tables[0]; if (dtCover.Rows.Count > 0) { for (int i = 0; i < dtCover.Rows.Count; i++) { dtShow.Columns.Add(dtCover.Rows[i]["ITEMNAME"].ToString(), Type.GetType("System.String")); } } #endregion #region 插入数据到新创建的DataTable int p = 1; //行号 for (int n = 0; n < dt.Rows.Count; n++) { string EMPLOYEEID = dt.Rows ["EMPLOYEEID"].ToString(); //判断是否最末一行 string CompareEMPLOYEEID = (n == dt.Rows.Count - 1) ? "000000" : dt.Rows[n + 1]["EMPLOYEEID"].ToString(); if (CompareEMPLOYEEID != EMPLOYEEID) //比较当前行与下行ID 不同ID 则添加本行数据 { DataRow dr = dtShow.NewRow(); dr["序号"] = p; dr["部门"] = dt.Rows ["EMPLOYDEP"]; dr["编号"] = dt.Rows ["EMPLOYEEID"]; dr["姓名"] = dt.Rows ["EMPLOYEENAME"]; dr["职务"] = dt.Rows ["POST"]; dr["期间"] = dt.Rows ["CYCLENAME"]; dr["开始日期"] = dt.Rows ["CYCLESTARTDATE"]; dr["结束日期"] = dt.Rows ["CYCLEENDDATE"]; for (int j = 0; j < dtShow.Columns.Count; j++) { DataRow[] dr1 = dt.Select("EMPLOYEEID='" + EMPLOYEEID + "' AND ITEMNAME='" + dtShow.Columns[j].ColumnName + "'"); if (dr1.Length > 0) { dr[dtShow.Columns[j].ColumnName] = dr1[0]["AMOUNT"].ToString(); } } dtShow.Rows.Add(dr); p++; } } #endregion
处理后显示结果如下
相关文章推荐
- 在C#中进行数据纵向不定行转横向列,多条信息成一行,例如员工薪资信息
- c# 读取文本中的一行用逗号连接数据,并对其进行排序
- C#用户进行LDAP验证并返回员工信息
- C# datagridview 实现单元格内容进行回车换行而不是换另一行数据
- R语言中的横向数据合并merge及纵向数据合并rbind的使用
- C# DataGridView 代码实现选中一行数据
- C# 对 App.config的appSettings节点数据进行加密
- java从文本文件中一次读入一行数据进行处理
- C# 读取Excel数据 并对日期是数字的进行处理
- 将数据表的纵向数据横向显示
- C# 对 list<T>中的数据按某字段的大小进行排序
- 【原创】C#搭建足球赛事资料库与预测平台(4) 比赛信息数据表设计
- Spring boot项目 使用ip+port+contextPath进行访问的时候会直接显示出项目中的一些接口信息和相关数据
- 在 Windows Azure 网站中进行纵向扩展和横向扩展
- C#中通过反射进行数据绑定
- 解决c# httpClient进行PostAsync()后返回数据中文乱码问题
- Python控制数据(留存及支付信息)按周进行跑批处理
- [分享] C# 中 Socket 进行数据接收的一点心得
- 史上最简单将数据信息导入wrod文档方案(C# for word)
- Python用拉格朗日法进行数据横向插值