Вот ответ на ваш запрос, я попробовал это с помощью курсора.Работает нормально.
CREATE TABLE product
(
product_id int
,INTRODUCED_DATE DATETIME
,WITHDRAWAL_DATE DATETIME
)
INSERT INTO product VALUES (100,'01-01-2011','01-05-2011')
INSERT INTO product VALUES (200,'05-30-2011','06-05-2011')
CREATE TABLE PRODUCT_ALL_DATES
(
product_id int
,Dates_Active DATETIME
)
DECLARE @product int
,@Introduct_Date DATETIME
,@Withdrawal_date DATETIME
,@Dates_Active DATETIME
DECLARE pointer_cur CURSOR FAST_FORWARD
FOR
SELECT * FROM product a
OPEN pointer_cur
FETCH NEXT FROM pointer_cur
INTO @Product,@Introduct_Date,@Withdrawal_date
WHILE(@@FETCH_STATUS=0)
BEGIN
WHILE(@Introduct_Date<=@Withdrawal_date)
BEGIN
SET @Dates_Active=@Introduct_Date
INSERT INTO PRODUCT_ALL_DATES
SELECT @product,@Dates_Active
SELECT @Introduct_Date=dateadd(day,1,@Introduct_Date)
END
FETCH NEXT FROM POINTER_CUR
INTO @Product,@Introduct_Date,@Withdrawal_date
END
CLOSE POINTER_CUR
DEALLOCATE POINTER_CUR
SELECT * FROM PRODUCT_ALL_DATES