SHOW ALL Dates data between two dates; if no row exists for particular date then show zero in all columns

后端 未结 6 1508
孤街浪徒
孤街浪徒 2020-12-03 06:12

I want to show all dates between two dates when there is any date data missing then its should show zero in val column .

declare @temp table (
id int ident         


        
6条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-03 07:06

    DECLARE @min DATETIME, 
            @max DATETIME, 
            @val INT 
    
    SELECT @min = Min(CDATE), 
           @max = Max(CDATE) 
    FROM   TEMP 
    
    DECLARE @temp TABLE 
      ( 
         CDATE SMALLDATETIME, 
         VAL   INT 
      ) 
    
    WHILE @min < @max 
      BEGIN 
          SELECT @val = VAL 
          FROM   TEMP 
          WHERE  CDATE = @min 
    
          INSERT @temp 
          VALUES (@min, 
                  @val) 
    
          SET @min = Dateadd(D, 1, @min) 
          SET @val = 0 
      END 
    
    SELECT * 
    FROM   @temp 
    

提交回复
热议问题