-- Declare variable DECLARE @BeginDate date DECLARE @EndDate date DECLARE @asofdate date DECLARE @NumberofDays int = 0 DECLARE @daycnt int = 0 DECLARE @Result TABLE(VPCCODE VARCHAR(18),VPCNAME VARCHAR(18),P_DATE DATE,RECEIVED DATE,TENDERED DATE,SHIPPED DATE) -- set Begining and Ending date range set @BeginDate = '2023-04-15' Set @EndDate = '2023-04-18' set @NumberofDays = DateDiff(day, @BeginDate,@EndDate) +1 set @asofdate = @BeginDate -- initiate loop ( not to experts - there has to be a better way ) WHILE (@daycnt < @NumberofDays) BEGIN INSERT INTO @Result SELECT [VPCCODE], [VPCNAME], @asofdate as 'P_DATE', SUM(CASE when CAST(RECEIVEDATE as DATE) = @asofdate THEN 1 else 0 end) AS RECEIVED, SUM(CASE when CAST(TENDERDATE as DATE) = @asofdate THEN 1 else 0 end) AS TENDERED, SUM(CASE when CAST(SHIPDATE as DATE) = @asofdate THEN 1 else 0 end) AS SHIPPED FROM vpc.Inventory WHERE VPCCODE = 091 GROUP BY [VPCCODE],[VPCNAME] set @asofdate = DATEADD(day, 1, @asofdate) set @daycnt = @daycnt+1 END SELECT * FROM @Result