Re: [SQL ] 员工每月请假资料统计

楼主: oherman (qq)   2016-04-11 17:15:19
不好意思,再延深问一下,因为我在查询的时候可能不知道是第几周
比如说3月1日至3月31日,只知道查询区间,查询结果如下:
employe 第N周 第N+1周 第N+2周 第N+3周 第N+4周
==================================================================
,但是r大的查询方式必需要先确定第周数,不知道有没有更smooth的查询方式?
※ 引述《rockchangnew (rock)》之铭言:
: ※ 引述《oherman (qq)》之铭言:
: : 数据库名称:SQL SERVER
: : 数据库版本:: 2012
: : 内容/问题描述:
: : 各位好
: : 我有个员工每月请假资料里面存放的资料如下:
: : employe date(varchar) off_hour(int)
: : =============================================
: : 张三 2016/01/02 8
: : 张三 2016/01/10 8
: : 李四 2016/01/03 4
: : 李四 2016/01/04 2
: : 李四 2016/01/26 8
: : 王五 2016/01/02 2
: : 王五 2016/01/16 1
: : 王五 2016/01/25 8
: : 想要依周历产生如下资料(查询一月份2016/01/01~2016/01/30资料)
: : employe 第一周 第二周 第三周 第四周
: : ==================================================================
: : 张三 8 8 0 0
: : 李四 6 0 0 8
: : 王五 2 0 1 8
: : 我可以不用procedure及function统计出像如上的资料表吗?谢谢!
: 我的请假日期是直接用日期型态,不是用varchar型态
: 因此如果您是用varchar则请记得转型
: select employee
: ,isnull([1],0) as '第一周'
: ,isnull([2],0) as '第二周'
: ,isnull([3],0) as '第三周'
: ,isnull([4],0) as '第四周'
: ,isnull([5],0) as '第五周' from
: (select
: employee
: ,DATEPART(ww,RestDate) as [Week]
: ,sum(off_hour) as [off_hours] from resttb
: group by employee,DATEPART(ww,RestDate)
: ) p
: PIVOT
: (
: sum ([off_hours])
: FOR [Week] IN
: ( [1], [2], [3], [4], [5] )
: ) AS pvt
: order by employee desc;
: 执行结果
: http://imgur.com/NYhhcGl
作者: rockchangnew (rock)   2016-04-11 22:48:00
那就只能写预存程序,https://goo.gl/sA0DEU上面那一篇是我之前回复别人的,做法大致相同。就是先找出区间有哪几周,然后组出语法再执行

Links booklink

Contact Us: admin [ a t ] ucptt.com