※ 引述《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