日期:2014-05-18  浏览次数:20517 次

为了学习,分算得了什么---------合并数据
昨天的帖子
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 部門名稱,員工編號,员工姓名 ')