Имя: Пароль:
1C
1C 7.7
v7: Нужна помощь с SQL запросом
0 fedoss
 
23.08.13
18:05
Дано: Таблица продаж по периодам #ВТ2 [Период,Товар,Количество], уже свернутая по Период,Товар.
Требуется: получить таблицу с еще одним столбцом - КоличествоИтог, нарастающим итогом по периодам.

ТекстЗапроса:
SELECT    
    Продажи.Товар,
    Продажи.Период,
    Количество = MAX(Продажи.Количество),
    КоличествоИтог = SUM(Итоги.Количество)
FROM #ВТ2 AS Продажи
LEFT JOIN #ВТ2 AS Итоги
    ON (Продажи.Период >= Итоги.Период)
    AND (Продажи.Товар = Итоги.Товар)
GROUP BY Продажи.Товар, Продажи.Период

Все получается замечательно, за исключением одного момента:
Мне нужно чтобы либо все продаваемые товары попали во все периоды
либо, если Количество по товару в каком-то периоде > 0, то он должен попасть во все последующие периоды.

Понимаю, что для первого варианта (все товары во все периоды), нужно сделать еще один JOIN, но никак не могу допереть, какой.
1 viktor_vv
 
23.08.13
18:14
Выгрести все товары из продаж в отдельную временную таблицу, и потом full join полученной таблицы с  #ВТ2.
2 viktor_vv
 
23.08.13
18:15
Таблицу по товарам свернуть по товарам.
3 viktor_vv
 
23.08.13
18:17
Тьфу ты. не так.
Выгрести товары в отдельную таблицу, выгрести периоды в отдельную таблицу, эти две таблицы full join, потом к полученной таблице left join #ВТ2.
4 viktor_vv
 
23.08.13
18:18
(3) left по товару и периоду.
5 fedoss
 
23.08.13
18:18
Да, у меня была идея
6 fedoss
 
23.08.13
18:19
(5) + Сделать
SELECT DISTINCT Товары
OUTER JOIN (SELECT DISTINCT Период)

но засомневался в оптимальности
7 viktor_vv
 
23.08.13
18:20
(6) ну а по другому вряд ли.
8 fedoss
 
23.08.13
18:23
Ок, попробую пока так. Спасибо!
Ошибка? Это не ошибка, это системная функция.