Имя: Пароль:
1C
1С v8
Разрыв последовательности
,
0 CyberDream
 
14.02.13
16:20
Привет, комрады.

Я понимаю, тема изъезженная.... но что-то под вечер мозк начинает плохо функционировать. Задача сгруппировать последовательность. До границы разрыва и после границы разрыва.

Например есть таблица:

НомерСтроки               Количество
1                         10
2                         12
5                         7
8                         11
9                         11
10                        11

Нужно получить:

Количество
22
7
33

И все это запросом
1 alexandrius
 
14.02.13
16:25
запросом вроде не айсно
2 CyberDream
 
14.02.13
16:26
(1) почему?
3 HeroShima
 
14.02.13
16:27
если номера строки в данных нет, ничего красивого не выйдет. но сама потребность какая-то не скуэльная
4 CyberDream
 
14.02.13
16:28
(3) есть номер строки в данных
5 CyberDream
 
14.02.13
16:34
ап
6 mikecool
 
14.02.13
16:36
(0) может и найдешь что в статистических функциях скуля, но 1с-ным запросом кажись не получится
7 shuhard
 
14.02.13
16:37
(0) свяжи сам с собой
на sql.ru народ любит такое
8 HeroShima
 
14.02.13
16:47
А это буде реализацией чего?
9 CyberDream
 
14.02.13
16:49
СКД отчет
10 mikecool
 
14.02.13
16:51
(7) а вязаться то надо по номеру строки?
11 GANR
 
14.02.13
16:51
Може быть это поможет Книга знаний: v8: Нумерация строк в запросе тебе?
12 GANR
 
14.02.13
16:52
Сначала пронумеровать, потом связать по ТВОЙ_Номер = ТВОЙ_Номер+1 - как-то так
13 GANR
 
14.02.13
16:53
14 HeroShima
 
14.02.13
16:56
а упорядочивание где задается?
15 CyberDream
 
14.02.13
16:56
(14) в запросе
16 GANR
 
14.02.13
16:57
(6) получится, но (11) тормозит ого-го на тысячах строк
17 HeroShima
 
14.02.13
16:58
(15) тогда можно без номеров
18 CyberDream
 
14.02.13
16:59
(11),(13) давно изучено :)
19 CyberDream
 
14.02.13
16:59
(17) ???
20 GANR
 
14.02.13
17:03
(18) Что непонятно???
Создаешь по (11)  п р о н у м е р о в а н н у ю  временную таблицу и (12).
21 GANR
 
14.02.13
17:11
А в (12) уже будут видны разрывы.
22 CyberDream
 
14.02.13
17:14
(21) спасибо - все получилось
23 GANR
 
14.02.13
17:16
(22) Но это не для десятков тысяч строк.
24 МихаилМ
 
21.02.13
13:22
(0)
SELECT НомерСтроки
ПОМЕСТИТЬ  НачальныеИнтервалы
FROM таблица AS t1
WHERE (1,2)  НЕ В (select 1,2 FROM таблица AS  t3 where t1.НомерСтроки - 1 = t3.НомерСтроки)  
;
SELECT ИНТЕРВАЛЫ.Нач, SUM(NUM.количество)  www
FROM таблица NUM
INNER JOIN
(
   SELECT т1.НомерСтроки Нач,ISNULL(min(т2.НомерСтроки),1000000000) Кон
   FROM НачальныеИнтервалы т1
   LEFT JOIN НачальныеИнтервалы т2
   ON т1.НомерСтроки < т2.НомерСтроки
   GROUP BY т1.НомерСтроки
) ИНТЕРВАЛЫ
ON NUM.НомерСтроки >= ИНТЕРВАЛЫ.Нач AND  NUM.НомерСтроки < ИНТЕРВАЛЫ.Кон
GROUP BY ИНТЕРВАЛЫ.Нач