|
Разрыв последовательности | ☑ | ||
---|---|---|---|---|
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 ИНТЕРВАЛЫ.Нач |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |