Как составить запрос по дням?

1. Terabaytus 22.07.24 08:33 Сейчас в теме
Добрый день, составляю отчёт в СКД но не могу сообразить.
Есть продавец к нему ходят постоянные покупатели нужно составить запрос который в разрезе этого продавца выводил бы сколько у него было постоянных покупателей за месяц пример первого дня месяца, второго дня месяца, а внизу итог?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. Tatyana_012345 24 22.07.24 10:42 Сейчас в теме
(1)
берете посещения постоянных клиентов за период , где дату преобразуете в месяц , а дальше группируете по месяцу и количество (посещений)

и будет у вас

01.01.2023 3
01.02.2023 10
01.03.2023 5
Terabaytus; +1 Ответить
10. Terabaytus 22.07.24 11:36 Сейчас в теме
(8) так мне их надо в разрезе продавца, а месяц разбить на дни. Тоесть не 3 в 01.2023 а 1 дня было 1 покупатель третьего 2
2. Vinzor 107 22.07.24 08:50 Сейчас в теме
Сделайте в запросе временную таблицу периодов поденно, а потом "левым" примотайте к ней данные из таблицы, где сведения "о визитах покупателей".
Tatyana_012345; Terabaytus; +2 Ответить
3. Terabaytus 22.07.24 09:09 Сейчас в теме
(2) Берём период, а как его разбить по дням?
7. Tatyana_012345 24 22.07.24 10:34 Сейчас в теме
(3) Возьмите производственный календарь

Запрос=Новый Запрос("ВЫБРАТЬ
	                    |	ДанныеПроизводственногоКалендаря.Дата КАК Дата
	                    |ИЗ
	                    |	РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
	                    |ГДЕ
	                    |	ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь = &ПроизводственныйКалендарь
	                    |	И ДанныеПроизводственногоКалендаря.Дата МЕЖДУ &ДатаНач И &ДатаКон
	                    |
	                    |УПОРЯДОЧИТЬ ПО
	                    |	Дата " );
Показать


а далее левым соединением ваши данные и соединяете по дате
Terabaytus; +1 Ответить
11. Vinzor 107 22.07.24 14:02 Сейчас в теме
(3) Этот запрос не зависит ни от каких регистров сведений. Применяйте его.
ВЫБРАТЬ
	0 КАК Цифра
ПОМЕСТИТЬ ВТЦифры

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	5

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	6

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	7

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	8

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	9
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1) ТОГДА ДАТАВРЕМЯ(1980, 1, 1) ИНАЧЕ &НачалоПериода КОНЕЦ, ДЕНЬ), День, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), День) КАК Период
ПОМЕСТИТЬ ПредставленияПериоды
ИЗ
	ВТЦифры КАК Цифры
		ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10
		ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1) ТОГДА ДАТАВРЕМЯ(1980, 1, 1) ИНАЧЕ &НачалоПериода КОНЕЦ, ДЕНЬ), НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ) ТОГДА &ОкончаниеИнтервалаПредставленияПериоды ИНАЧЕ &ОкончаниеПериода КОНЕЦ, ДЕНЬ), День) > 9)
		ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100
		ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1) ТОГДА ДАТАВРЕМЯ(1980, 1, 1) ИНАЧЕ &НачалоПериода КОНЕЦ, ДЕНЬ), НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ) ТОГДА &ОкончаниеИнтервалаПредставленияПериоды ИНАЧЕ &ОкончаниеПериода КОНЕЦ, ДЕНЬ), День) > 99)
		ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры1000
		ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1) ТОГДА ДАТАВРЕМЯ(1980, 1, 1) ИНАЧЕ &НачалоПериода КОНЕЦ, ДЕНЬ), НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ) ТОГДА &ОкончаниеИнтервалаПредставленияПериоды ИНАЧЕ &ОкончаниеПериода КОНЕЦ, ДЕНЬ), День) > 999)
		ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10000
		ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1) ТОГДА ДАТАВРЕМЯ(1980, 1, 1) ИНАЧЕ &НачалоПериода КОНЕЦ, ДЕНЬ), НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ) ТОГДА &ОкончаниеИнтервалаПредставленияПериоды ИНАЧЕ &ОкончаниеПериода КОНЕЦ, ДЕНЬ), День) > 9999)
		ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100000
		ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1) ТОГДА ДАТАВРЕМЯ(1980, 1, 1) ИНАЧЕ &НачалоПериода КОНЕЦ, ДЕНЬ), НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ) ТОГДА &ОкончаниеИнтервалаПредставленияПериоды ИНАЧЕ &ОкончаниеПериода КОНЕЦ, ДЕНЬ), День) > 99999)
ГДЕ
	НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ВЫБОР КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1) ТОГДА ДАТАВРЕМЯ(1980, 1, 1) ИНАЧЕ &НачалоПериода КОНЕЦ, ДЕНЬ), День, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), День) МЕЖДУ ВЫБОР КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1) ТОГДА ДАТАВРЕМЯ(1980, 1, 1) ИНАЧЕ &НачалоПериода КОНЕЦ И ВЫБОР КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ) ТОГДА &ОкончаниеИнтервалаПредставленияПериоды ИНАЧЕ &ОкончаниеПериода КОНЕЦ
;

////////////////////////////////////////////////////////////­////////////////////
УНИЧТОЖИТЬ ВТЦифры
Показать


можете в запросе убрать всё, что связано с параметром &ОкончаниеИнтервалаПредставленияПериоды, упростите его.
Либо оставьте, но придайте значение 31.12.3999 23:59:59
Terabaytus; +1 Ответить
4. Said-We 22.07.24 09:47 Сейчас в теме
(3) В источнике же данных дата есть? Чего разбивать, если дата уже есть?
Если нужно, то объединить со всеми датами и нулём, что бы пропусков в датах не было и всё.
Terabaytus; +1 Ответить
5. soft_wind 22.07.24 10:08 Сейчас в теме
а как определять Постоянных покупателей от обычных?
(по условию же надо считать только постоянных...)
6. Terabaytus 22.07.24 10:22 Сейчас в теме
(5) Они карточку предъявляют, что их переводит в разряд постоянных.
9. jmw 61 22.07.24 11:25 Сейчас в теме
(6)
Они карточку предъявляют,
и программа видя, что чел машет карточкой, узнаёт в нём постоянного покупателя?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот