看板 Database 關於我們 聯絡資訊
不好意思,再延深問一下,因為我在查詢的時候可能不知道是第幾週 比如說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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.216.67 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1460366120.A.DAB.html
rockchangnew: 那就只能寫預存程序,https://goo.gl/sA0DEU 04/11 22:48
rockchangnew: 上面那一篇是我之前回覆別人的,做法大致相同。就是 04/11 22:51
rockchangnew: 先找出區間有哪幾周,然後組出語法再執行 04/11 22:51