SELECT
Подзапрос.ПодзапросНоменклатура [ПодзапросНоменклатура $Справочник.Номенклатура],
Подзапрос.ПодзапросСклад [ПодзапросСклад $Справочник.Склады],
SUM(
CASE WHEN Подзапрос.ПодзапросПериод = $НачалоПериода.День(:ДатаКонца~) THEN
CASE WHEN Подзапрос.КоличествоКонечныйОстаток > 0 THEN
CASE WHEN Подзапрос. ПодзапросКоличествоКонечныйОстаток <= 0 THEN
DATEDIFF(day, Подзапрос.ОстаткиТМЦОстаткиОбороты1Период, Подзапрос.ПодзапросПериод)
ELSE
DATEDIFF(day, Подзапрос.ОстаткиТМЦОстаткиОбороты1Период, :ДатаКонца~) + 1
END
ELSE
CASE WHEN Подзапрос.ПодзапросКоличествоКонечныйОстаток > 0 THEN
DATEDIFF(day, Подзапрос.ПодзапросПериод, :ДатаКонца~) + 1
ELSE
0
END
END
ELSE
CASE WHEN Подзапрос.КоличествоКонечныйОстаток > 0 THEN
DATEDIFF(day, Подзапрос.ОстаткиТМЦОстаткиОбороты1Период, Подзапрос.ПодзапросПериод)
ELSE
0
END
END
) as КоличествоДнейВПродаже
FROM (
SELECT Запрос2Уровня.ПодзапросНоменклатура ПодзапросНоменклатура
, Запрос2Уровня.ПодзапросСклад ПодзапросСклад
, Запрос2Уровня.ПодзапросКоличествоКонечныйОстаток
, Запрос2Уровня.ПодзапросПериод
, Запрос2Уровня.ОстаткиТМЦОстаткиОбороты1Период
, Запрос2Уровня.КоличествоКонечныйОстаток
FROM (
SELECT Запрос1Уровня.Номенклатура ПодзапросНоменклатура
, Запрос1Уровня.Склад ПодзапросСклад
, Запрос1Уровня.КоличествоКонечныйОстаток ПодзапросКоличествоКонечныйОстаток
, Запрос1Уровня.Период ПодзапросПериод
, Запрос1Уровня.ОстаткиТМЦОстаткиОбороты1Период
, ОстаткиТМЦОстаткиОбороты.КоличествоКонечныйОстаток
FROM $РегистрОстаткиОбороты.ОстаткиТМЦ(:ДатаНачала,:ДатаКонца~,День,,,,(Номенклатура, Склад),) AS ОстаткиТМЦОстаткиОбороты
INNER JOIN (
SELECT ОстаткиТМЦОстаткиОбороты.Номенклатура
, ОстаткиТМЦОстаткиОбороты.Склад
, ОстаткиТМЦОстаткиОбороты.КоличествоКонечныйОстаток
, ОстаткиТМЦОстаткиОбороты.Период
, MAX(ОстаткиТМЦОстаткиОбороты1.Период) ОстаткиТМЦОстаткиОбороты1Период
FROM $РегистрОстаткиОбороты.ОстаткиТМЦ(:ДатаНачала,:ДатаКонца~,День,,,,(Номенклатура, Склад),) AS ОстаткиТМЦОстаткиОбороты
LEFT JOIN $РегистрОстаткиОбороты.ОстаткиТМЦ(:ДатаНачала,:ДатаКонца~,День,,,,(Номенклатура, Склад),) AS ОстаткиТМЦОстаткиОбороты1
ON ОстаткиТМЦОстаткиОбороты.Номенклатура = ОстаткиТМЦОстаткиОбороты1.Номенклатура AND ОстаткиТМЦОстаткиОбороты.Склад = ОстаткиТМЦОстаткиОбороты1.Склад AND
ОстаткиТМЦОстаткиОбороты.Период > ОстаткиТМЦОстаткиОбороты1.Период
GROUP BY ОстаткиТМЦОстаткиОбороты.Номенклатура
, ОстаткиТМЦОстаткиОбороты.Склад
, ОстаткиТМЦОстаткиОбороты.КоличествоКонечныйОстаток
, ОстаткиТМЦОстаткиОбороты.Период
) AS Запрос1Уровня
ON ОстаткиТМЦОстаткиОбороты.Номенклатура = Запрос1Уровня.Номенклатура AND ОстаткиТМЦОстаткиОбороты.Склад = Запрос1Уровня.Склад AND
ОстаткиТМЦОстаткиОбороты.Период = Запрос1Уровня.ОстаткиТМЦОстаткиОбороты1Период
) AS Запрос2Уровня
) AS Подзапрос
GROUP BY Подзапрос.ПодзапросНоменклатура
, Подзапрос.ПодзапросСклад
ORDER BY Подзапрос.ПодзапросНоменклатура
, Подзапрос.ПодзапросСклад
Вступайте в нашу телеграмм-группу Инфостарт