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