К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Запрос по первым числам месяцев.

Гость
0 - 26.06.2012 - 21:24
Всем привет. Вот не могу никак придумать, возможно ли одним запросом выбрать обороты по регистру за некий период, охватывающий, к примеру, несколько месецев так, чтобы можно было получить значения по первым N дням каждого месяца, попавшего в период запроса? Либо придется делить период на куски, по каждому делать запрос, выгружать к ТЗ, склеивать ТЗ, ну а потом извращаться с ее выводом (к тому же еще и группировок прочих куча). Второй вариант в принципе решаем, но хотелось бы как-то одним что-ли махом!?


Гость
1 - 26.06.2012 - 21:37
пример напиши
Гость
2 - 26.06.2012 - 21:48
ну был бы пример, не спросил бы :) ноги растут от отчета типовой торговли: Динамика продаж ТМЦ, только надо анализировать не помесячно, а по, например первым 10 дням каждого месяца.
Допустим,
Период с Дата1 по дата2;
Номенклатура=Регистр.Продажи.Номенклатура;
Колво=Регистр.Продажи.количество;
Функция Продаж=Сумма(Колво);
Группировка Месяц;
Группировка Номенклатура;
-это даст нам помесячные объемы, а вот как получить за каждые 10 дней каждого из месяцев, попадающих в диапазон Дата1-Дата2?
Гость
3 - 27.06.2012 - 02:01
Выбираешь по дням, из даты вытаскиваешь номер дня в месяце и делаешь отбор по этому полю от 1 до 10.
Гость
4 - 27.06.2012 - 07:49
так это 7-ка?
Гость
5 - 27.06.2012 - 09:21
Можно сделать группировку день и анализировать смену месяца. Ну и выводить сколько надо дней.
Гость
6 - 27.06.2012 - 12:45
(4) да, это семерка, к сожалению :)
(3)"делаешь отбор от 1 до 10", это как? в самом запросе?
(5)выводить то надо в совокупности, не по дням.
вот думаю в сторону Когда двигаться и в запросе несколько функций суммирования использовать.
Гость
7 - 27.06.2012 - 13:27
Механизм примерно такой.
Делаешь запрос с группировкой день.
Выгружаешь его в таблицу.
Дальше лохматишь эту таблицу. Оставляешь количество дней, которое надо (в выборке анализируешь смену месяца). Нужные строки перебрасываешь в другую тз или же наоборот удаляшь ненужные строки из таблицы запроса.
Ну а дальше дело техники. Группируешь готовую таблицу как надо и на печать ее.
Гость
8 - 27.06.2012 - 13:39
7-Buzz > Ужас...
Гость
9 - 27.06.2012 - 13:41
(8) Придумай что-нибудь умней. Мы посмотрим.
Гость
10 - 27.06.2012 - 13:49
9-Buzz >
С первого по восьмое число:
Where
SUBSTRING(DATE_TIME_IDDOC, 7, 2) >= '01'
AND SUBSTRING(DATE_TIME_IDDOC, 7, 2) <= '08'
Гость
11 - 27.06.2012 - 13:59
(10) Ну если такая штука прокатит в обычном запросе, то да, можно и условие закатать.
Гость
12 - 27.06.2012 - 14:04
11-Buzz > В обычном прямом запросе - еще как прокатит.
Гость
13 - 27.06.2012 - 14:08
Про SQL здесь вроде не написано.
А вот что-то типа ДатаДень(Дата) в запросе покатит или нет не помню.
Гость
14 - 27.06.2012 - 14:15
13-Buzz >
Прямые запросы можно делать и на dbf базе.
А в данном случае все-таки лучше будет просто в запросе внешнюю функцию использовать, как это не печально..
Гость
15 - 27.06.2012 - 15:43
(7) Примерно так и думал, хоть и понимаю, что это действительно ну не то, чтобы ужас, но грустно :)
(10)мысль понятна, прямые запросы уже юзал, кое-что получалось, завтра буду думать.
(14) По поводу внешней функции - имеется в виду наверно суммирование по функции, в функцию передаем день, и если день >N, то возвращаем 0,а группировка всеравно по месяцу. Точно, наверно так прокатит. а что печального, поясните?
Гость
16 - 28.06.2012 - 13:37
Что-то туплю,
Функция продаж=Сумма(Моясумма(Запрос.Колво));

Функция Моясумма(Значение)
Возврат Значение
КонецЦункция;

так примерно должно выглядеть?
Гость
17 - 28.06.2012 - 15:08
15-kupreeff > В условие функцию воткнуть. Передавать в нее дату. И пусть она возвращает 1, если попали в период и 0 - если не попали.
Гость
18 - 28.06.2012 - 18:03
(17) замечательно! Спасибо за подсказку! И ничего печального, работает :)


К списку вопросов






Copyright ©, Все права защищены