Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Вопрос по запросу

$
0
0
Здравствуйте!
+ Есть список уникальных ТТ+SKU и для каждого свои периоды
ТТSKUStartDateEndDate
ТТ1SKU1 01.10.201710.10.2017
ТТ1SKU2 01.10.201710.10.2017
ТТ2SKU1 08.10.201716.10.2017
ТТ2SKU2 08.10.201716.10.2017
............

Для каждого ТТ+SKU имеет свое количество сценарий, в зависимости от длины периода. То есть в одном сценарии должно быть 7 дней. К примеру

Для ТТ1+SKU1, где StartDate = 01.10.2017 и EndDate=10.10.2017 должно быть 4 периода по 7 дней подряд:
1. 01.10.2017 - 07.10.2017
2. 02.10.2017 - 08.10.2017
3. 03.10.2017 - 09.10.2017
4. 04.10.2017 - 10.10.2017

А для ТТ2+SKU1, где StartDate = 08.10.2017 и EndDate=12.10.2017 должно быть 3 периода по 7 дней подряд:
1. 08.10.2017 - 14.10.2017
2. 09.10.2017 - 15.10.2017
3. 10.10.2017 - 16.10.2017

+ Нужен такой результат
СценарийTTSKUStartDateВСценарииEndDateВСценарииДата
Сценарий1ТТ1SKU101.10.201707.10.201701.10.2017
Сценарий1ТТ1SKU101.10.201707.10.201702.10.2017
Сценарий1ТТ1SKU101.10.201707.10.201703.10.2017
Сценарий1ТТ1SKU101.10.201707.10.201704.10.2017
Сценарий1ТТ1SKU101.10.201707.10.201705.10.2017
Сценарий1ТТ1SKU101.10.201707.10.201706.10.2017
Сценарий1ТТ1SKU101.10.201707.10.201707.10.2017
Сценарий2ТТ1SKU102.10.201708.10.201702.10.2017
Сценарий2ТТ1SKU102.10.201708.10.201703.10.2017
Сценарий2ТТ1SKU102.10.201708.10.201704.10.2017
Сценарий2ТТ1SKU102.10.201708.10.201705.10.2017
Сценарий2ТТ1SKU102.10.201708.10.201706.10.2017
Сценарий2ТТ1SKU102.10.201708.10.201707.10.2017
Сценарий2ТТ1SKU102.10.201708.10.201708.10.2017
..................

+ Пытаюсь написать SQL-запрос для данной задачи
DECLARE @TT_SKU Table
( CodeTT varchar (8), SKU int, DateStart date, DateEnd date) 

INSERT INTO @TT_SKU SELECT 'ТТ1', 00001,'01.10.2017', '10.10.2017'
INSERT INTO @TT_SKU SELECT 'ТТ1', 00002,'01.10.2017', '10.10.2017'
INSERT INTO @TT_SKU SELECT 'ТТ2', 00001,'08.10.2017', '16.10.2017'
INSERT INTO @TT_SKU SELECT 'ТТ2', 00002,'08.10.2017', '16.10.2017'

SELECT
	CodeTT,
	SKU,
	DateStart,
	DateEnd,
	DateDiff(day,DateStart,dateEnd)+1 AS КоличествоДнейВПериоде	
FROM
	@TT_SKU 
Запутался. Тут похоже цикл нужен. Скажите для решения данной задачи какую функцию надо использовать? Как правильно написать запрос?

Viewing all articles
Browse latest Browse all 7251