獲取月度列表

2022-07-13 15:57:11 字數 3557 閱讀 5668

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...