在MS SQL server中創建動態日曆

有時候在報表中展示每天的數據需要按整月的方式顯示,借用SQL Server的PIVOT可以很容易的實現這個功能。下面這個SQL可以生成每行爲一個星期的月曆。從【星期日】開始。

Declare 
    @Date datetime,
    @StartDate datetime,
    @EndDate datetime,
    @FirstIndex int

Set @Date =getdate() 

Select 
    @StartDate=Convert(char(6),@Date,112)+'01', 
    @EndDate=Dateadd(month,1,@StartDate)-1,
    @FirstIndex=Datediff(day,6,@StartDate)%7;--第二個參數可以調整每個行的起止星期
With t As
(
    Select Date=Convert(int,1),Row=(@FirstIndex)/7,Col=@FirstIndex
    Union All
    Select Date=Date+1,Row=(@FirstIndex+Date)/7,Col=(Date+@FirstIndex)%7
    From t
    Where Date<=Datediff(day,@StartDate,@EndDate)
)
Select 
    [星期日]=Isnull(Convert(char(2),[0]),''),
    [星期一]=Isnull(Convert(char(2),[1]),''),
    [星期二]=Isnull(Convert(char(2),[2]),''),
    [星期三]=Isnull(Convert(char(2),[3]),''), 
    [星期四]=Isnull(Convert(char(2),[4]),''),
    [星期五]=Isnull(Convert(char(2),[5]),''),
    [星期六]=Isnull(Convert(char(2),[6]),'')
From t
Pivot (Max(Date) For col In([0],[1],[2],[3],[4],[5],[6])) b

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章