Имя: Пароль:
1C
1С v8
Как получить диапазоны дат в запросе?
,
0 Господин ПЖ
 
10.01.13
18:17
Например есть такая времянка:

ВЫБРАТЬ
   ДАТАВРЕМЯ(2013, 1, 1) КАК дата,
   100 КАК ставка
ПОМЕСТИТЬ ставки

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

ВЫБРАТЬ
   ДАТАВРЕМЯ(2013, 2, 1),
   200
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ДАТАВРЕМЯ(2013, 3, 1),
   300

на выходе в выборке нужно

01.01.2013/31.01.2013/100
01.02.2013/28.02.2013/200
01.03.2013/30.03.2013/300

делается это в рамках одного запроса?
1 Fragster
 
гуру
10.01.13
18:17
да
2 Fragster
 
гуру
10.01.13
18:18
соедини само с собой по "меньше", сгруппируй и получи максимум
3 Господин ПЖ
 
10.01.13
18:25
(2) что-то не получается
4 Fragster
 
гуру
10.01.13
18:25
(3) тогда 300 рублей
5 rphosts
 
10.01.13
18:28
(0) хошь дам тебе запрос который выдаёт даты по порядку? Дальше сам допилишь...
6 Господин ПЖ
 
10.01.13
18:30
(5) давай...
7 rphosts
 
10.01.13
18:32
ща накалякаю
8 rphosts
 
10.01.13
18:34
ВЫБРАТЬ Цифры.Поле1 КАК Цифра
ПОМЕСТИТЬ Цифры
ИЗ  (ВЫБРАТЬ 1 КАК Поле1
ОБЪЕДИНИТЬ  ВЫБРАТЬ 2
ОБЪЕДИНИТЬ  ВЫБРАТЬ 3  
ОБЪЕДИНИТЬ  ВЫБРАТЬ 4
ОБЪЕДИНИТЬ  ВЫБРАТЬ 5
ОБЪЕДИНИТЬ  ВЫБРАТЬ 6
ОБЪЕДИНИТЬ  ВЫБРАТЬ 7
ОБЪЕДИНИТЬ  ВЫБРАТЬ 8
ОБЪЕДИНИТЬ  ВЫБРАТЬ 9
ОБЪЕДИНИТЬ  ВЫБРАТЬ 10) КАК Цифры
;
//////////////////////////////////////////////
ВЫБРАТЬ  ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, (Цифры.Цифра-1) + (Цифры1.Цифра -1)*10+ (Цифры2.Цифра -1)*100) КАК Дата
ИЗ  Цифры КАК Цифры,   Цифры КАК Цифры1,   Цифры КАК Цифры2
ГДЕ   ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, (Цифры.Цифра-1) + (Цифры1.Цифра -1)*10+ (Цифры2.Цифра -1)*100)
УПОРЯДОЧИТЬ ПО  Дата
9 Kashemir
 
10.01.13
18:35
ВЫБРАТЬ
   ТЗ.Период,
   ТЗ.Ставка
ПОМЕСТИТЬ ТЗ
ИЗ
   &ТЗ КАК ТЗ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТЗ.Период КАК Период,
   МИНИМУМ(ТЗ1.Период) КАК Период1,
   ТЗ.Ставка
ИЗ
   ТЗ КАК ТЗ
       ЛЕВОЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ1
       ПО ТЗ.Период < ТЗ1.Период

СГРУППИРОВАТЬ ПО
   ТЗ.Период,
   ТЗ.Ставка

УПОРЯДОЧИТЬ ПО
   Период
10 Fragster
 
гуру
10.01.13
18:35
(8) в (0) этого не нужно
11 Fragster
 
гуру
10.01.13
18:35
(9) близко, но нет
12 Reset
 
10.01.13
18:36
Пример к (2)

Выбрать Максимум(Вт2.Дата),ДобавитьКДате(Вт1.Дата,День,-1),Вт1.Ставка
Из Вт как Вт1 Левое Соединение Вт как Вт2
по Вт1.Дата>Вт2.Дата
Сгруппировать по Вт1.Дата,Вт1.Ставка
13 rphosts
 
10.01.13
18:36
(10) вломм мне думать в полдесятого... что предложил - то и набацал
14 Kashemir
 
10.01.13
18:36
(11) Что конкретно не так ?
15 Fragster
 
гуру
10.01.13
18:37
(14) это я туплю, все правильно
16 Господин ПЖ
 
10.01.13
18:40
(11) вроде похоже на правду...

(9) спасибо

(8) спасибо
17 Господин ПЖ
 
10.01.13
18:40
всем спасибо за помощь
18 Reset
 
10.01.13
18:41
в (9) правильней, я поторопился