|
Подскажите запрос - непрерывные интервалы дат как собрать? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
26.03.14
✎
12:12
|
Есть РС РабочееВремяСотрудников
Дата - ВидИспользованияВремени Надо выделить непрерывные интервалы одного вида времени типа С - ПО Т.е. таблицу вида 01/01 - Р 02/01 - Р 04/01 - Б 05/01 - Б 06/01 - Р преобразовать к виду 01/01 - 02/01 - Р 04/01 - 05/01 - Б 06/01 - 06/01 - Р как такое одним запросом? |
|||
1
RomaH
naïve
26.03.14
✎
12:12
|
или СКД умеет может?
|
|||
2
RomaH
naïve
26.03.14
✎
12:19
|
соединить саму с собою по равному виду времени
и дате отличающейся на 1 день записи с NULL - крайние потом первые крайние записи соединить с последними крайними по условию дата >= и сгруппировать по минимуму ? |
|||
3
Ненавижу 1С
гуру
26.03.14
✎
12:20
|
что было 03/01?
|
|||
4
Ненавижу 1С
гуру
26.03.14
✎
12:21
|
(1) это умеет даже сам запрос
|
|||
5
RomaH
naïve
26.03.14
✎
12:25
|
(3) другой вид времени не учитываемый в регистре
(4) ну так я и спрашиваю - как? |
|||
6
vmv
26.03.14
✎
12:41
|
подписался - жду гения
будет готовый запрос - украду конеш |
|||
7
RomaH
naïve
26.03.14
✎
12:46
|
||||
8
Ненавижу 1С
гуру
26.03.14
✎
12:48
|
(7) нормально, у меня примерно также:
ВЫБРАТЬ ПодразделенияФизЛиц.ФизЛицо КАК ФизЛицо, ПодразделенияФизЛиц.Период КАК Период, ПодразделенияФизЛиц.Занятость КАК Занятость ПОМЕСТИТЬ НачалаПериодов ИЗ РегистрСведений.ПодразделенияФизЛиц КАК ПодразделенияФизЛиц ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПодразделенияФизЛиц КАК ПодразделенияФизЛиц1 ПО ПодразделенияФизЛиц.ФизЛицо = ПодразделенияФизЛиц1.ФизЛицо И (РАЗНОСТЬДАТ(ПодразделенияФизЛиц.Период, ПодразделенияФизЛиц1.Период, ДЕНЬ) = -1) ГДЕ ПодразделенияФизЛиц.Занятость <> ЕСТЬNULL(ПодразделенияФизЛиц1.Занятость, НЕОПРЕДЕЛЕНО) ИНДЕКСИРОВАТЬ ПО ФизЛицо, Занятость, Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПодразделенияФизЛиц.ФизЛицо КАК ФизЛицо, ПодразделенияФизЛиц.Период КАК Период, ПодразделенияФизЛиц.Занятость КАК Занятость ПОМЕСТИТЬ ОкончанияПериодов ИЗ РегистрСведений.ПодразделенияФизЛиц КАК ПодразделенияФизЛиц ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПодразделенияФизЛиц КАК ПодразделенияФизЛиц1 ПО ПодразделенияФизЛиц.ФизЛицо = ПодразделенияФизЛиц1.ФизЛицо И (РАЗНОСТЬДАТ(ПодразделенияФизЛиц.Период, ПодразделенияФизЛиц1.Период, ДЕНЬ) = 1) ГДЕ ПодразделенияФизЛиц.Занятость <> ЕСТЬNULL(ПодразделенияФизЛиц1.Занятость, НЕОПРЕДЕЛЕНО) ИНДЕКСИРОВАТЬ ПО ФизЛицо, Занятость, Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НачалаПериодов.ФизЛицо КАК ФизЛицо, НачалаПериодов.Период КАК Начало, МИНИМУМ(ОкончанияПериодов.Период) КАК Окончание, НачалаПериодов.Занятость ИЗ НачалаПериодов КАК НачалаПериодов ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОкончанияПериодов КАК ОкончанияПериодов ПО НачалаПериодов.ФизЛицо = ОкончанияПериодов.ФизЛицо И НачалаПериодов.Занятость = ОкончанияПериодов.Занятость И НачалаПериодов.Период <= ОкончанияПериодов.Период СГРУППИРОВАТЬ ПО НачалаПериодов.ФизЛицо, НачалаПериодов.Период, НачалаПериодов.Занятость УПОРЯДОЧИТЬ ПО ФизЛицо, Начало АВТОУПОРЯДОЧИВАНИЕ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |