Формирование таблицы периода в запросе

Классический запрос.

Задача: сформировать таблицу периода в запросе, так, чтобы были записи для каждого дня, без пропусков.

Комментарий к запросу:

  1. Создаем временную таблицу “ВТ_Цифры”, в которой будет 10 строк с цифрами от 0 до 9
  2. Создаем временную таблицу “ВТ_Числа” – здесь буду числа от 0 до 9999 (если вам требуется меньший или больший диапазон, то запрос легко изменяется)
  3. Создаем таблицу с датами от “&ДатаНачала” по “&ДатаОкончания” используя функцию “ДобавитьКДате”
ВЫБРАТЬ
	0 КАК Цифра
ПОМЕСТИТЬ ВТ_Цифры

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

ВЫБРАТЬ
	1

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

ВЫБРАТЬ
	2

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

ВЫБРАТЬ
	3

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

ВЫБРАТЬ
	4

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

ВЫБРАТЬ
	5

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

ВЫБРАТЬ
	6

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

ВЫБРАТЬ
	7

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

ВЫБРАТЬ
	8

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

ВЫБРАТЬ
	9
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ВТ_Цифры1.Цифра + 10 * ВТ_Цифры2.Цифра + 100 * ВТ_Цифры3.Цифра + 1000 * ВТ_Цифры4.Цифра КАК ПолеЧисло
ПОМЕСТИТЬ ВТ_Числа
ИЗ
	ВТ_Цифры КАК ВТ_Цифры1,
	ВТ_Цифры КАК ВТ_Цифры2,
	ВТ_Цифры КАК ВТ_Цифры3,
	ВТ_Цифры КАК ВТ_Цифры4
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ВТ_Числа.ПолеЧисло) КАК ДатаЧисло
ИЗ
	ВТ_Числа КАК ВТ_Числа
ГДЕ
	ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ВТ_Числа.ПолеЧисло) МЕЖДУ &ДатаНачала И &ДатаОкончания

УПОРЯДОЧИТЬ ПО
	ДатаЧисло
Author: admin

Добавить комментарий