1--獲取月度列表2if
exists(select
1from sysobjects where name =
'proc_getdatemonthlist
'and type ='p
')3drop
proc
proc_getdatemonthlist4go
5create
proc
proc_getdatemonthlist
6@begindate
varchar(6
)7 ,@enddate
varchar(6
)8 ,@delimiter
varchar(1) =',
'9as10
/*11
create by: www.liuju.net
12qq群:327307058
13date: 2013-10-09
14*/
15declare
16@ibegin
int, @iend
int, @ibeginmon
int, @iendmon
int, @iyear
int, @imon
int, @itempyear
int, @itempmon
int, @istart
int , @istop
int,
17@sbeginmon
varchar(2), @sendmon
varchar(2), @sresult
varchar(8000), @s
varchar(6)18
begin
19if (len(@begindate) <>
6) or (len(@enddate) <>6)
20begin
21raiserror('
日期格式錯誤!
', 16, 1)22
return
23end
24if (cast(@enddate
asint) -
cast(@begindate
asint)) <025
begin
26raiserror('
日期範圍錯誤!
', 16, 1)27
return
28end
29if
@begindate
=@enddate
30begin
31select
@begindate
32return
33end
34select
@ibegin
=substring(@begindate, 1, 4), @iend
=substring(@enddate, 1, 4)35
set@iyear
=@iend
-@ibegin
36if
@iyear
<037
begin
38raiserror('
日期範圍錯誤!
', 16, 1)39
return
40end
41if
@iyear
>
9042
begin
43raiserror('
日期範圍錯誤,最大跨年限度為90年!
', 16, 1)44
return
45end
46--
開始處理
47set
@sresult=''
48select
@ibeginmon
=substring(@begindate, 5, 2), @iendmon
=substring(@enddate, 5, 2)49
--不跨年
50if
@iyear=0
51begin
52set
@imon
=@iendmon
-@ibeginmon
53if
@imon
>054
begin
55set
@sresult
=@begindate
56set
@itempmon=0
57while
@itempmon
<
@imon-1
58begin
59set@s=
cast(@begindate
asint) +160
set@sresult
=@sresult
+@delimiter+@s
61set
@itempmon
=@itempmon+1
62end
63set
@sresult
=@sresult
+@delimiter
+@enddate
64end
65end
66--
跨年67
if@iyear
>068
begin
69--
從開始到結束,每次+1,當月份 > 12 年度進1,月度歸1
70select
@istart
=@begindate, @istop
=@enddate
71while
@istart
<=
@istop
72begin
73select
@itempyear
=substring(convert(varchar(6),@istart), 1, 4), @itempmon
=substring(convert(varchar(6),@istart), 5, 2)74
if@itempmon
>
1275
begin
76set
@istart
= (@itempyear
+1)*
100+177
end78
set@s
=convert(varchar(6), @istart)79
--整合結果
80if
len(@sresult) =081
set@sresult=@s
82else
83set
@sresult
=@sresult
+@delimiter+@s
84set
@istart
=@istart+1
85end
86end
87select
@sresult
88end
89go
9091
--test
92exec proc_getdatemonthlist '
201210
', '
201512
'
sql月度彙總 按月度分類彙總
按月份分類彙總 id 訂單號 日期 1 cno001 2013 6 5 2 cno001 2013 6 10 3 cno002 2013 6 24 4 cno001 2013 7 5 5 cno001 2013 7 10 6 cno002 2013 7 15 得到結果 訂單號 月份 cno001 2...
月度筆記1907
1.倖存者偏差 對於高學歷者,大家不但會關注其中的成功者,更會注意那些有著高學歷卻很落魄的人 而對於低學歷者,我們往往只願被其中少數成功者所吸引,卻不經意忽略了廣大低學歷又沒有成功的人。如果統計的樣本錯了,結論只會離真相越來越遠。2.信用卡的 分期付款促進消費 3.地位遊戲和財富遊戲 地位遊戲比如政...
SQL Server 獲取日曆列表
需求 報表需要把未有資料的日期也顯示出來。需要一張日曆表和資料表 日曆表 left join 資料表,則可以實現。問題是,日曆表怎麼生成呢?其實只需要有一張連續數字的表就可以生成日曆表。方案一 通過系統內部表 master spt values 方案二 自定義日曆表 方案一 select conve...