当前位置: 代码迷 >> ASP.NET >> 为了学习,分算得了什么-合并数据,该如何解决
  详细解决方案

为了学习,分算得了什么-合并数据,该如何解决

热度:5120   发布时间:2013-02-25 00:00:00.0
为了学习,分算得了什么---------合并数据
昨天的帖子
http://community.csdn.net/Expert/topic/5700/5700979.xml?temp=.5231134

初步从ok.xsl
部門名稱   員工編號   员工姓名   請假日期   假别名称   請假時數   時數單位  
(K1)   Q-0004   姚力   20070601   年休假   1   天  
(K1)   Q-0004   姚力   20070608   陪產假   1   天  
(K1)   Q-0004   姚力   20070612   年休假   2   天  
(K1)   Q-0005   顧忠   20070601   年休假   0.5   天  
(K2)   Q-0031   趙丽   20070601   半薪病假   8   小時  
.........................................
要实现
部門名稱   員工編號   员工姓名     年休假     陪產假     半薪病假
(K1)   Q-0004   姚力   20070601       24小时       8小时        
(K1)   Q-0005   顧建忠   20070601     4小时  
(K2)   Q-0031   趙丽   20070601                                         8   小時  
.................................
时间单位为天的话,就要乘8,转化为小时。
以工号为唯一性,合并多条数据为一条。

..........
Help   me   !


------解决方案--------------------------------------------------------
先踩下,开完会,帮你弄 ...
------解决方案--------------------------------------------------------
先从excel读到datatable中.然后有两种方法,一种是先导入数据库,然后在数据库中计算,这样比较简单,做个groupby 就可另一种直接在datatblae中计算.DataView 按部门员工排序.循环.累加.或者,用dt.Compute( "sum(日期) ", "编号= '某个员工编号 ')
------解决方案--------------------------------------------------------
declare @s varchar(8000)
set @s = 'select 部門名稱,員工編號,员工姓名 '
select @s = @s+ ', '+假别名称+ '=sum(case 假别名称 when ' ' '+假别名称+ ' ' ' then 請假時數*(case 時數單位 when ' '天 ' ' then 8 else 1 end) else 0 end) '
from tb group by 假别名称
exec(@s+ 'from tb group by 部門名稱,員工編號,员工姓名 ')
  相关解决方案