У меня есть таблица, как показано ниже:
date prodname
2018-01-01 Product1
2018-01-05 Product1
2018-01-09 Product1
2018-01-17 Product1
2018-01-24 Product1
2018-01-26 Product1
2018-02-20 Product1
2018-01-02 Product2
2018-01-07 Product2
2018-01-09 Product2
2018-01-17 Product2
2018-01-28 Product2
Код:
CREATE TABLE myTemp(
Date Date,
ProductName varchar(10))
INSERT INTO myTemp values
('2018-01-01', 'Product1')
,('2018-01-05','Product1')
,('2018-01-09','Product1')
,('2018-01-17','Product1')
,('2018-01-24','Product1')
,('2018-01-26','Product1')
,('2018-02-20','Product1')
,('2018-01-02','Product2')
,('2018-01-07','Product2')
,('2018-01-09','Product2')
,('2018-01-17','Product2')
,('2018-01-28','Product2')
В таблице может быть любое количество записей даты для каждого продукта.Я хочу отобразить название продукта, минимальную дату и минимальную дату + 24 дня.И я хочу сделать это для каждого 25-дневного периода.
Например, в случае product1, 2018-01-01 - это минимальная дата, а 2018-01-25 - это дата PLUS 25. НО , product1 также имеет записи на дату больше 2018-01-25.Поэтому я должен увидеть еще одну запись для product1 в выводе, как показано ниже:
2018-01-26 2018-02-19 product1
2018-01-26 - это минимальная дата после 2018-01-25.2109-02-19 - это дата PLUS 25.и product1 - это имя продукта.
Таким образом, мой окончательный вывод должен быть:
2018-01-01 2018-01-25 Product1
2018-01-26 2018-02-19 Product1
2018-01-02 2018-01-26 Product2
2018-01-28 2018-02-21 Product2
Я попытался сделать это с помощью min () и DateAdd (), но это дает мне одну строку длякаждый продукт.
DROP TABLE IF EXISTS #MyTemp
select MIN(Date) CurrDate, DateAdd(d, 24, MIN(Date)) CurrPlus25Date, ProductName
into #MyTemp
from myTemp
group by ProductName
select * from #MyTemp
Ценю любую помощь.