-- create table CREATE TABLE TB_INVENTORY( DATE_INVENT DATE, PRODUCT VARCHAR(50), QUANTITY INT ) -- insert some dummy data into table INSERT INTO TB_INVENTORY VALUES (CONVERT(DATE,'2021-01-01',23),'ITEM0001',150) INSERT INTO TB_INVENTORY VALUES (CONVERT(DATE,'2021-01-10',23),'ITEM0001',200) INSERT INTO TB_INVENTORY VALUES (CONVERT(DATE,'2021-01-15',23),'ITEM0001',300) INSERT INTO TB_INVENTORY VALUES (CONVERT(DATE,'2021-01-20',23),'ITEM0001',100) INSERT INTO TB_INVENTORY VALUES (CONVERT(DATE,'2021-01-28',23),'ITEM0001',50) -- declare table DECLARE @DATE_INVENT VARCHAR(1000) DECLARE @DATE_INVENT_PREV VARCHAR(1000) DECLARE @count INT DECLARE @LIMIT INT -- declare cursor DECLARE INVENTORY_DAYLIST_CR CURSOR FOR select DISTINCT DATE_INVENT from TB_INVENTORY ORDER by DATE_INVENT ASC -- open cursor OPEN INVENTORY_DAYLIST_CR; -- fetch into previous date FETCH NEXT FROM INVENTORY_DAYLIST_CR INTO @DATE_INVENT_PREV; WHILE @@FETCH_STATUS = 0 BEGIN -- fetch next date into current date FETCH NEXT FROM INVENTORY_DAYLIST_CR INTO @DATE_INVENT; PRINT 'PREVIOUS DATE: '+@DATE_INVENT_PREV+' DATE: '+@DATE_INVENT; -- if difference between previous and current date is bigger than 1 IF DATEDIFF(DAY,@DATE_INVENT_PREV,@DATE_INVENT) > 1 BEGIN -- initialize counter with 1 SET @count = 1 -- get the difference between two dates SET @LIMIT = DATEDIFF(DAY,@DATE_INVENT_PREV,@DATE_INVENT) -- while counter is smaller than limit WHILE @count< @LIMIT BEGIN -- insert the value for previous date into previous date + count INSERT INTO TB_INVENTORY (DATE_INVENT, PRODUCT, QUANTITY) SELECT DATEADD(DAY,@COUNT,@DATE_INVENT_PREV), PRODUCT, QUANTITY FROM TB_INVENTORY WHERE DATE_INVENT = @DATE_INVENT_PREV -- increase the counter by 1 SET @count = @count + 1; END; END -- store value of current date into previous date SET @DATE_INVENT_PREV = @DATE_INVENT END; -- close cursor CLOSE INVENTORY_DAYLIST_CR; -- flush cursor out the memory DEALLOCATE INVENTORY_DAYLIST_CR; SELECT * FROM TB_INVENTORY ORDER BY DATE_INVENT ASC