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

1С:Предприятие :: 1С:Предприятие 8 общая

Реализовать в запросе условие

Реализовать в запросе условие
Я
   Штурман
 
05.09.16 - 08:21
Допустим, есть таблица

А   15.12.2012
А   07.06.2014
Б   14.04.2011
Б   18.09.2015
С   23.02.2015

Нужно чтобы в итоге получилась следующая таблица:

А   15.12.2012   07.06.2014 
Б   14.04.2011   18.09.2015
С   23.02.2015

Т.е. если в первом столбце строки равны, то нижнюю значение следующей перекидываем в новый столбец.

Можно ли такое реализовать в запросе без помощи массива и таблицы значений?
 
 
   В тылу врага
 
1 - 05.09.16 - 08:22
а если у А значений 10?
   Штурман
 
2 - 05.09.16 - 08:27
(1) Вот тогда такая таблица должна получиться

Было
А   15.12.2012
А   07.06.2014
А   14.04.2011
А   18.09.2015
А   23.02.2015

Стало
А   15.12.2012   07.06.2014
А   07.06.2014   14.04.2011 
А   14.04.2011   18.09.2015
А   18.09.2015   23.02.2015
А   23.02.2015
   Лефмихалыч
 
3 - 05.09.16 - 08:32
(0) (2) если в таблице не будет поля, по которому можно отличить конец отрезка, то - хрена лысого.
   В тылу врага
 
4 - 05.09.16 - 08:34
(2) левое соединение по неравенству, МИНИМУМ
   Molinor
 
5 - 05.09.16 - 08:36
(3) Да почему же, во временной таблице считаем сколько строк для одинаковых значений из первого столбца. Потом эту ВТ цепляем к результату из (4) и если строк больше 1, то проверяем на нул левое соединение.
   Лефмихалыч
 
6 - 05.09.16 - 08:37
хотя стоп, если 07.06..14.04 - это тоже отрезок, то (4) решение
   Лефмихалыч
 
7 - 05.09.16 - 08:38
(5) я почему-то решил, что надо именно попарно разбить. Чтобы конец первого отрезка не был началом следующего. А это не так.
   Molinor
 
8 - 05.09.16 - 08:41
(7) Да и попарно можно, поди. Чётность (порядковый номер) же записи можно получить в предварительно упорядоченном списке. Левым соединением все записи, которые меньше и считаем их. Вот и признак конца периода.
   Штурман
 
9 - 05.09.16 - 08:49
Т.е. берем еще раз эту же таблицу и через левое соединение сравниваем по минимуму?
   Лефмихалыч
 
10 - 05.09.16 - 09:15
(9)
ВЫБРАТЬ
  Т.Дата как Начало,
  МИНИМУМ(Т1.Дата) как Конец
ИЗ
   ТвояТаблица как Т
   ЛЕВОЕ СОЕДИНЕНИЕ ТвояТаблица как Т1
   ПО Т.Дата <Т1.Дата
СГРУППИРОВАТЬ ПО
 Т.Дата
 
 Рекламное место пустует
   Штурман
 
11 - 05.09.16 - 09:18
всем спасибо )
   Штурман
 
12 - 06.09.16 - 09:30
Что-то не особо работает условие в запросе

Была таблица:
06.05.2015  А
01.07.2015  А
01.01.2016  А
01.07.2016  А

Стала таблица:
06.05.2015    01.07.2015    А
06.05.2015    01.01.2016    А
06.05.2015    01.07.2016    А
01.07.2015    01.01.2016    А
01.07.2015    01.07.2016    А
01.01.2016    01.07.2016    А
01.07.2016                А

Сам запрос такой:


ВЫБРАТЬ
    Таблица.Период КАК Начало,
    Таблица1.Период КАК Окончание,
    Таблица.Данные
ИЗ
    РегистрСведений.Таблица КАК Таблица
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Таблица КАК Таблица1
        ПО Таблица.Период < Таблица1.Период
            И Таблица.Данные = Таблица1.Данные
ГДЕ
    Таблица.Период >= &Период

СГРУППИРОВАТЬ ПО
    Таблица.Данные,
    Таблица.Период,
    Таблица1.Период

УПОРЯДОЧИТЬ ПО
    Начало
   Molinor
 
13 - 06.09.16 - 11:15
(12) А где минимум?
   Лефмихалыч
 
14 - 06.09.16 - 11:36
(12) и не должно. Ты неправильно копипастил
   Штурман
 
15 - 06.09.16 - 12:16
(13) (14)  Переписал, добавил Минимум:


ВЫБРАТЬ
    Таблица.Период КАК Начало,
    МИНИМУМ(Таблица1.Период) КАК Окончание,
    Таблица.Данные
ИЗ
    РегистрСведений.Таблица КАК Таблица
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Таблица КАК Таблица1
        ПО Таблица.Период < Таблица1.Период
            И Таблица.Данные = Таблица1.Данные
ГДЕ
    Таблица.Период >= &Период

СГРУППИРОВАТЬ ПО
    Таблица.Данные,
    Таблица.Период,
    Таблица1.Период

УПОРЯДОЧИТЬ ПО
    Начало


Результат такой же, как и в (12)
   В тылу врага
 
16 - 06.09.16 - 13:03
(15) хватит писать бездумно:

СГРУППИРОВАТЬ ПО
    Таблица.Данные,
    Таблица.Период
   RomanYS
 
17 - 06.09.16 - 13:12
Строки пронумеровать, соединять
по 
Таблица.НомерСтроки = Таблица1.НомерСтроки+1
            И Таблица.Данные = Таблица1.Данные
   Лефмихалыч
 
18 - 06.09.16 - 13:14
надо было просто скопипастить один-в-один...

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