UFN_REPORT_BUILD_DATECOL_TABLE_STRING

Creates a date range temporary table creation statement.

Return

Return Type
nvarchar(700)

Parameters

Parameter Parameter Type Mode Description
@DATETYPE int IN

Definition

Copy


      CREATE function dbo.UFN_REPORT_BUILD_DATECOL_TABLE_STRING(@DATETYPE int)
      returns nvarchar(700)
      with execute as caller
      as  
      begin
          declare @RETURNSTRING nvarchar(700);
          declare @DATEPART nvarchar(7);
          declare @SELECT nvarchar(200);

          if @DATETYPE in (6,12,49,50)
          begin 
              set @DATEPART = 'month';
              set @SELECT = 'select substring(datename('+ @DATEPART + ', @DATESTART),1, 3) ';
          end
          if @DATETYPE in (43,45,51)
          begin
              set @DATEPART = 'quarter'
              set @SELECT = 'select ''Q'' + datename('+ @DATEPART + ',@DATESTART) ';
          end 
          if @DATETYPE in (7,13, 53, 54, 55)
          begin
              set @DATEPART = 'year'
              set @SELECT = 'select datename('+ @DATEPART + ', @DATESTART) ';
          end 

          set @SELECT = @SELECT + ', datepart(year, '+ ' @DATESTART) ';

      set @RETURNSTRING = 'create table #DATECOL (DATECOL nvarchar(20) collate database_default,YEARCOL nvarchar(4) collate database_default)' +
                          ' declare @DATESTART datetime = @STARTDATE;' +
                          ' declare @ENDLIMIT int;' +
                          ' declare @COUNTER int = 0;' +
                          ' select @ENDLIMIT = datediff(' + @DATEPART  + ',@STARTDATE, @ENDDATE);' +
                          ' if @ENDLIMIT = 0' +
                          ' begin' +
                          ' insert into #DATECOL(DATECOL, YEARCOL) ' +
                          @SELECT +
                          ' end' +
                          ' else' +
                          ' begin' +
                          ' while @COUNTER <= @ENDLIMIT ' +
                          ' begin' +
                          ' insert into #DATECOL ' +
                          @SELECT +
                          ' set @COUNTER = @COUNTER + 1;' +
                          ' select @DATESTART = dateadd(' + @DATEPART + ', 1, @DATESTART);' +
                          ' end' +
                          ' end  ';

          return @RETURNSTRING
      end