|
|
v8: Реально ли сделать такое запросом |
☑ |
|
0
razbiralshik
17.04.13
✎
11:07
|
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ПродажиАвтомобилейОбороты.Период, ДЕНЬ) КАК ДатаДень,
ДЕНЬ(ПродажиАвтомобилейОбороты.Период) КАК ЧислоДень,
СУММА(ЕСТЬNULL(ПродажиАвтомобилейОбороты.КоличествоОборот, 0)) КАК Количество,
СУММА(ЕСТЬNULL(ПродажиАвтомобилейОбороты.СуммаОборот, 0)) КАК Сумма
ИЗ
РегистрНакопления.ПродажиАвтомобилей.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ПродажиАвтомобилейОбороты
СГРУППИРОВАТЬ ПО
НАЧАЛОПЕРИОДА(ПродажиАвтомобилейОбороты.Период, ДЕНЬ),
ДЕНЬ(ПродажиАвтомобилейОбороты.Период)
Тут получаем количество и суммы продаж по дням за период, может выглядеть так:
02.03.2013 - 2 - 10 - 10000
05.03.2013 - 5 - 1 - 1000
10.03.2013 - 10 - 5 - 5000
,а нужно чтобы выглядело так:
01.03.2013 - 0 - 0 - 0
02.03.2013 - 2 - 10 - 10000
03.03.2013 - 0 - 0 - 0
04.03.2013 - 0 - 0 - 0
05.03.2013 - 5 - 1 - 1000
06.03.2013 - 0 - 0 - 0
07.03.2013 - 0 - 0 - 0
08.03.2013 - 0 - 0 - 0
09.03.2013 - 0 - 0 - 0
10.03.2013 - 10 - 5 - 5000
Вот как так сделать запросом?
|
|
|
1
х86
17.04.13
✎
11:08
|
присоединяй к таблице дат
|
|
|
2
fisher
17.04.13
✎
11:09
|
Если для вывода в печатную форму, то СКД умеет дополнять периоды.
|
|
|
3
razbiralshik
17.04.13
✎
11:10
|
(2) там работа с экселем
|
|
|
4
razbiralshik
17.04.13
✎
11:11
|
(1) а подробнее расскажи, чтобы понятно было что имеешь ввиду, дальше сам разберусь
|
|
|
5
fisher
17.04.13
✎
11:12
|
Но если очень-очень хочешь запросом, то вот тебе заготовка для таблицы дат:
ВЫБРАТЬ
0 КАК Цифра
ПОМЕСТИТЬ Цифры
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ
ВЫБРАТЬ
9
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДниПериода.ДеньПериода КАК ДеньПериода,
ПОМЕСТИТЬ ДниПериода
ИЗ
(ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, НомераДнейПериода.НомерДня) КАК ДеньПериода,
ИЗ
(ВЫБРАТЬ
Тысячи.Цифра * 1000 + Сотни.Цифра * 100 + Десятки.Цифра * 10 + Единицы.Цифра КАК НомерДня
ИЗ
Цифры КАК Тысячи,
Цифры КАК Сотни,
Цифры КАК Десятки,
Цифры КАК Единицы
ГДЕ
Тысячи.Цифра * 1000 + Сотни.Цифра * 100 + Десятки.Цифра * 10 + Единицы.Цифра <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)) КАК НомераДнейПериода) КАК ДниПериода
;
|
|
|
6
fisher
17.04.13
✎
11:15
|
Запятую лишнюю забыл вырезать. И вложенность можно одну убрать. Просто у меня в этом запросе еще считались стандартные периоды и количество дней в них.
|
|
|
7
Джинн
17.04.13
✎
11:15
|
(5) А календарь не проще?
|
|
|
8
х86
17.04.13
✎
11:17
|
(7)можно и календарь, но не всегда он есть и не всегда заполнен
|
|
|
9
х86
17.04.13
✎
11:17
|
(4)левым соединением к таблице (5) по периоду
|
|
|
10
razbiralshik
17.04.13
✎
12:08
|
Спасибо, помогло!
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший