Гость
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Ошибка 102500 / 2 сообщений из 2, страница 1 из 1
22.10.2011, 21:47
    #37493871
Misha_LV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 102500
Здравствуйте.
Решал задачу и столкнулся с данной ошибкой.Версия сервера ASA 9.0.2.3924.
Задача: сложить периоды с одинаковым значением некоторого параметра в один период действия этого параметра.
Периоды не пересекаются, чередуются один за другим.
Пример:
d1d2vls2011-01-012011-01-05112011-01-062011-01-15112011-01-162011-01-25212011-01-262011-01-3111
Результат:
d1d2vls2011-01-012011-01-15112011-01-162011-01-25212011-01-262011-01-3111
где ,d1 - дата с, d2 - дата по,ls - лицевой счет,v -некоторый параметр

Решил попробовать рекурсивным запросом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Тестовая таблица:
CREATE TABLE "DBA"."testperiod" (
	"id" integer NOT NULL DEFAULT autoincrement,
	"d1" date NULL,
	"d2" date NULL,
	"v" integer NULL,
	"ls" integer NULL,
	CONSTRAINT "id" PRIMARY KEY ( "id" ));

Заполнил значениями:
delete testperiod;
begin
declare i integer;
set i= 1 ;
while i< 500000  loop
insert into testperiod(	"d1",	"d2",	"v" ,	"ls" )
select '2011-01-01','2011-01-05', 1 ,i
union
select '2011-01-06','2011-01-15', 1 ,i
union
select '2011-01-16','2011-01-25', 2 ,i
union
select '2011-01-26','2011-01-31', 1 ,i;
set i=i+ 1 
end loop;
end;

Запрос:
WITH recursive
   tree ( "d1",	"d2",	"v" ,	"ls",lv,dd1,dd2) 
   AS (SELECT "d1",	"d2",	"v" ,	"ls", 0 ,d1,d2
     FROM testperiod where d1='2011-01-01'
      UNION ALL 
      SELECT  V."d1",	v.d2,	V."v" ,	V."ls",t.lv+ 1 ,(if t.v=v.v then t.dd1 else v.d1 endif),v.d2
      FROM testperiod  
	  V  INNER JOIN tree t 
          ON  (t.ls = v.ls and t.d2+ 1 =v.d1 ))
select ls,dd1,max(dd2),v from tree
group by ls,dd1,v
order by dd1;
На одном лицевом счете запрос выдает правильный результат ,но при количестве записей в таблице 2 млн ,произошла ошибка:
The following error occured while fetching results:
Ошибка SQL времени выполнения --- Сбой контрольного утверждения 102500 (9.0.2.3924)
Work table:invalid expression
SQLCODE= -300,ODBC 3 State = 'HY000'
...
Рейтинг: 0 / 0
24.10.2011, 12:33
    #37495029
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 102500
Тестил ваш код на 500 тыс ЛС (в таблице было 2 млн записей)- выдает ошибку такую же. У меня ошибка исчезла при 150 тыс ЛС (в таблице было 600 тыс записей). Видимо рекурсивный запрос имеет ограничение на кол-во записей. Можно конечно дробить таблицу по диапазону ЛС, но это гемор. Должно быть какое-то другое решение.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Ошибка 102500 / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]