Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с запросом
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
alex040269
Есть таблица

Цитата
Значение1 Дата1
Значение1 Дата2
Значение2 Дата3
Значение2 Дата4
Значение1 Дата5
Значение2 Дата6
Значение2 Дата7


Нужно получить

Цитата
Значение1 Дата1 Дата2
Значение2 Дата3 Дата4
Значение1 Дата5 Дата5
Значение2 Дата6 Дата7
Vofka
Вы б логику получения данных описали. Или вам написать запрос который будет работать только на этом наборе данных?
Fynjy
Цитата(alex040269 @ 17.10.13, 13:58) необходимо зарегистрироваться для просмотра ссылки
Есть таблица
Нужно получить


А если будет
Значение2 Дата6
Значение2 Дата7
Значение2 Дата8
Значение2 Дата9

?
alex040269
Ну в общем нужно из таблицы1 выбрать данные периодами, то есть если Значение повторяется с Дата1 по Дата2, то в итоговой таблице будет
Строка из трех колонок = Значение Дата1 Дата2

Цитата(Fynjy @ 17.10.13, 14:08) необходимо зарегистрироваться для просмотра ссылки
А если будет
Значение2 Дата6
Значение2 Дата7
Значение2 Дата8
Значение2 Дата9

?

Значение2 Дата7 Дата9.

Если Значение повторяется несколько дат подряд, то оно идет в одну строку в соответствующий период.
pablo
Цитата
Цитата(Fynjy @ 17.10.13, 14:08) *
А если будет

Значение2 Дата6
Значение2 Дата7
Значение2 Дата8
Значение2 Дата9


?

Значение2 Дата7 Дата9.

То есть дата6 выбрасываем из-за того, что она первая?
alex040269
Цитата(alex040269 @ 17.10.13, 14:11) необходимо зарегистрироваться для просмотра ссылки
Значение2 Дата7 Дата9.

сори ошибся
Значение2 Дата6 Дата9.

Цитата(pablo @ 17.10.13, 14:14) необходимо зарегистрироваться для просмотра ссылки
То есть дата6 выбрасываем из-за того, что она первая?

ВСЕ значения подряд - в одну строку.
pablo
Уточняю, все даты содержат только дату и подряд - в смысле дней (например, 10.11.13 10.11.13 11.11.13 10.11.13 должны стать - 10.11.13 11.11.13)
Vofka
Мне кажется, чистым запросом это не сделать. Средствами СКД - может быть можно, не запросом - точно можно, а чистым запросом, который строится не динамически в коде - сомневаюсь.
alex040269
Цитата(pablo @ 17.10.13, 14:40) необходимо зарегистрироваться для просмотра ссылки
Уточняю, все даты содержат только дату и подряд - в смысле дней (например, 10.11.13 10.11.13 11.11.13 10.11.13 должны стать - 10.11.13 11.11.13)

да.
pablo
Если ограничить максимальную длину периода - то можно сделать запрос.
Например, для максимальной длины 3 будет приблизительно такой запрос (начальные данные хранятся в источнике данных Начало)
Выбрать 
значение,
дата как ПерваяДата,
ДобавитьКдате(Дата,день,1) как ВтораяДата,
ДобавитьКдате(Дата,день,2) как ТретьяДата
поместить ВсеДаты
из Начало;
Выбрать
ВсеДаты.значение,
ЕстьNull(Начало.Дата, ВсеДаты.Перваядата) КАК КонецПериода1,
ВсеДаты.ТретьяДата,
ВсеДаты.Перваядата
Поместить Период1
из ВсеДаты левое соединение Начало
   по ВсеДаты.Значение=Начало.Значение и ВсеДаты.ВтораяДата=Начало.Дата;

Выбрать
Период1.значение,
Период1.ПерваяДата как НачалоПериода,
ЕстьNull(Начало.Дата, Период1.КОнецПериода1) КАК КонецПериода
из Период1 левое соединение Начало
   по Период1.Значение=Начало.Значение и Период1.ТретьяДата=Начало.Дата
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.