Имя: Пароль:
1C
1С v8
Подскажите по запросу
0 Genayo
 
09.04.13
11:49
Из таблицы вида:

Дата          |Значение      
--------------------      
01.01.2012    | 10    
04.06.2012    | 20  
10.06.2012    | 30    

Надо получить (запросом или в СКД)

НачалоПериода | КонецПериода |Значение
---------------------------------------    
01.01.2012    | 03.06.2012   | 10  
04.06.2012    | 09.06.2012   | 20
10.06.2012    | ТекущаяДата  | 30

Что-то туплю...
1 azernot
 
09.04.13
12:02
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДАТАВРЕМЯ(2012, 1, 1) КАК Дата,
   10 КАК Значение
ПОМЕСТИТЬ Данные

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

ВЫБРАТЬ
   ДАТАВРЕМЯ(2012, 6, 4),
   20

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

ВЫБРАТЬ
   ДАТАВРЕМЯ(2012, 6, 10),
   30
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
   РасчетПериодовДействия.ДатаНачала КАК ДатаНачала,
   РасчетПериодовДействия.ДатаОкончания,
   РасчетПериодовДействия.Значение
ИЗ
   (ВЫБРАТЬ
       Данные.Дата КАК ДатаНачала,
       Данные.Значение КАК Значение,
       МИНИМУМ(ВЫБОР
               КОГДА СледующиеДанные.Дата ЕСТЬ NULL
                   ТОГДА &ТекущаяДата
               ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(СледующиеДанные.Дата, ДЕНЬ, -1), ДЕНЬ)
           КОНЕЦ) КАК ДатаОкончания
   ИЗ
       Данные КАК Данные
           ЛЕВОЕ СОЕДИНЕНИЕ Данные КАК СледующиеДанные
           ПО Данные.Дата < СледующиеДанные.Дата
   
   СГРУППИРОВАТЬ ПО
       Данные.Дата,
       Данные.Значение) КАК РасчетПериодовДействия

УПОРЯДОЧИТЬ ПО
   ДатаНачала
2 Genayo
 
09.04.13
12:21
(1) Спасибо, то что надо. Только не понял, зачем ВЫБРАТЬ РАЗЛИЧНЫЕ во внешнем запросе?
3 azernot
 
09.04.13
12:22
(2) рука дрогнула, убери :)