Вход | Регистрация

1С:Предприятие ::

Метки: 

Преобразовать таблицу в запросе

Я
   PershinSergei88
 
21.12.17 - 08:45
Коллеги помогите построить запрос, если конечно это вообще  возможно реализовать в запросе.

Изначальная таблица:

Период            ПериодЗавершения    Состояние
05.01.2017        10.01.2017            Нет
11.01.2017        20.01.2017            Да
13.01.2017                        Да
02.02.2017        10.02.2017            Да
12.02.2017                        Да
18.02.2017                        Нет



Необходимо привести к такому виду:

Период            ПериодЗавершения    Состояние
05.01.2017        10.01.2017            Нет
11.01.2017        20.01.2017            Да
21.01.2017        01.02.2017            нет
02.02.2017        10.02.2017                      да
11.02.2017        11.02.2017            нет
12.02.2017        17.02.2017            Да
18.02.2017                                              нет
 
 
   regniws
 
1 - 21.12.17 - 08:46
IQ тест - найди закономерность?
   PershinSergei88
 
2 - 21.12.17 - 08:47
Период          ПериодЗавершения   Состояние 
05.01.2017      10.01.2017            Нет 
11.01.2017      20.01.2017            Да 
13.01.2017                            Да 
02.02.2017      10.02.2017            Да 
12.02.2017                            Да 
18.02.2017                            Нет



Необходимо привести к такому виду:

Период            ПериодЗавершения    Состояние 
05.01.2017        10.01.2017            Нет 
11.01.2017        20.01.2017            Да 
21.01.2017        01.02.2017            нет 
02.02.2017        10.02.2017            да 
11.02.2017        11.02.2017            нет 
12.02.2017        17.02.2017            Да 
18.02.2017                              нет
   PershinSergei88
 
3 - 21.12.17 - 08:51
Изначальная таблица:
Период      ПериодЗавершения Состояние
05.01.2017  10.01.2017       Нет
11.01.2017  20.01.2017       Да
13.01.2017  хххххххххх       Да
02.02.2017  10.02.2017       Да
12.02.2017  хххххххххх       Да
18.02.2017  хххххххххх       Нет



Необходимо привести к такому виду:

Период      ПериодЗавершения    Состояние
05.01.2017  10.01.2017          Нет
11.01.2017  20.01.2017          Да
21.01.2017  01.02.2017          нет
02.02.2017  10.02.2017          да
11.02.2017  11.02.2017          нет
12.02.2017  17.02.2017          Да
18.02.2017  хххххххххх          нет

Где хххххххххх - пустая дата
   regniws
 
4 - 21.12.17 - 08:55
А куда делась
13.01.2017  хххххххххх       Да
   regniws
 
5 - 21.12.17 - 08:56
И почему появилась
21.01.2017  01.02.2017          нет 

Может проще описать задачу?
   VladZ
 
6 - 21.12.17 - 08:59
Мое мнение: изначально задача поставлена криво. Задача в (0) - это "выпрямление изначально кривой задачи".
   PershinSergei88
 
7 - 21.12.17 - 09:00
вот в консоли накидал исходную таблицу

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 1, 5, 0, 0, 0) КАК Начало,
    ДАТАВРЕМЯ(2017, 1, 10, 0, 0, 0) КАК конец,
    ЛОЖЬ КАК Статус
ПОМЕСТИТЬ ВТ

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

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 1, 11, 0, 0, 0),
    ДАТАВРЕМЯ(2017, 1, 20, 0, 0, 0),
    ИСТИНА

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

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 1, 13, 0, 0, 0),
    ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0),
    ИСТИНА

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

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 2, 2, 0, 0, 0),
    ДАТАВРЕМЯ(2017, 2, 10, 0, 0, 0),
    ИСТИНА

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

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 2, 12, 0, 0, 0),
    ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0),
    ИСТИНА

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

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 2, 18, 0, 0, 0),
    ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0),
    ЛОЖЬ
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ.Начало,
    ВТ.конец,
    ВТ.Статус
ИЗ
    ВТ КАК ВТ
   PershinSergei88
 
8 - 21.12.17 - 09:02
(4)
А куда делась
13.01.2017  хххххххххх       Да


Она попала в период
11.01.2017  20.01.2017       Да 
т.к. там тоже состояние ДА
   VladZ
 
9 - 21.12.17 - 09:04
По сути - это периодический регистр сведений. Регистр содержит состояние (Да, нет).

Нужно организовать запись в этот регистр. Период завершения в этом случае не нужен. Он будет равен следующей дате изменения статуса.
   VladZ
 
10 - 21.12.17 - 09:05
Запрос в этом случае будет такой:

Выбрать *
из МойНовыйРегистр.
 
  Рекламное место пустует
   PershinSergei88
 
11 - 21.12.17 - 09:05
(5) И почему появилась 
21.01.2017  01.02.2017          нет 


потому что вся таблица по сути это один интервал (например год), но не все периоды попадают в изначальную таблицу, поэтому их нужно добавить с статусом ложь,
чтоб на выходе была таблица без пропусков вообще, т.е. все периоды имели статусы
   ПегийЛунь
 
12 - 21.12.17 - 09:10
Сформировать запрос в который добавить строку
ДОБАВИТЬКДАТЕ(КакойТоРегистр.ПериодНачала, ДЕНЬ, -1) КАК ДатаСледЗаписиМинус1
   PershinSergei88
 
13 - 21.12.17 - 09:10
(9) Сейчас опишу полную задачу, чтоб было понятнее откуда берется изначальная таблица и почему есть потребность превратить ее в желаемый вид.
   Радим1987
 
14 - 21.12.17 - 09:18
   VladZ
 
15 - 21.12.17 - 10:16
(13) С этого и нужно было начинать.


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует