Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Вот часть запроса, на которую выдается эта ошибка:
SELECT
(isnull(+$piece(fields,'R200_C3:',2),0)+isnull(+$piece(fields,'R300_C3:',2),0)+isnull(+$piece(fields,'R350_C3:',2),0))/(isnull(+$piece(fields,'R216_C3:',2),0)+isnull(+$piece(fields,'R316_C3:',2),0)+isnull(+$piece(fields,'R363_C3:',2),0))
FROM ASV_Entities.CalcStatementTitle
Проблема в делении.
Если делится на число, например:
SELECT
(isnull(+$piece(fields,'R200_C3:',2),0)+isnull(+$piece(fields,'R300_C3:',2),0)+isnull(+$piece(fields,'R350_C3:',2),0))/3
FROM ASV_Entities.CalcStatementTitle
то выполняется как надо, без ошибок.
В чем засада?
Да, (isnull(+$piece(fields,'R216_C3:',2),0)+isnull(+$piece(fields,'R316_C3:',2),0)+isnull(+$piece(fields,'R363_C3:',2),0)) не ноль,
Поле fields - тип VARCHAR
Отредактированно newuser (12.10.2012 14:11:25)
Неактивен
Увы, никто не отвечает.
Потому поговорю сама с собой)
Похоже, что дело в типе данных.
Попробовала делить на переменную типа INTEGER, сработало без ошибок.
Тогда, может посоветуете где посмотреть правила деления. Я нашла только что на DATE, TIME делить нельзя.
Неактивен
) Следующий вопрос.
Менять формат, структуру базы (добавлять таблицы) не имею права.
Как внутри запроса поменять формат знаменателя?
Неактивен
Ошибка то какая?
upd, если смена типа поля помогает, смените тип поля в запросе с помощью CAST()
Отредактированно Shopen (12.10.2012 15:24:31)
Неактивен
Ошибка:
#5540: SQLCODE: -400
400
THE CATALOG HAS THE MAXIMUM NUMBER OF USER DEFINED INDEXES
Explanation
No more than 500 user-defined indexes can be created in the catalog database.
System action
The statement cannot be processed.
Programmer response
If this index must be created, another user-defined index on the catalog must be dropped. After that index is dropped, this statement can be executed.
SQLSTATE
54027
(http://publib.boulder.ibm.com/infocente … lcodes.htm)
Попробовала Cast, большое спасибо за подсказку (пишу запросы редко, по мере необходимости, все забываю, начинаю разбираться заново каждый раз):
SELECT
(cast((isnull(+$piece(fields,'R200_C3:',2),0)+isnull(+$piece(fields,'R300_C3:',2),0)+isnull(+$piece(fields,'R350_C3:',2),0)) as INTEGER))/(cast((isnull(+$piece(fields,'R200_C3:',2),0)+isnull(+$piece(fields,'R300_C3:',2),0)+isnull(+$piece(fields,'R350_C3:',2),0)) as INTEGER))
FROM ASV_Entities.CalcStatementTitle
Неа, опять -400((((
Понимаю, что там про индексы написано, но не понимаю как это применить к моему случаю.
Неактивен
Эм.. так это вообще не про mysql, это db2
Вам стоит обратится на соответствующий форум, т.к. тут только про mysql
Неактивен
Боюсь я погрячилась, расшифровала ошибку как ошибку DB2.
Прошу прощения, у меня сейчас база конечно же не DB2, а CACHE.
Проблема осталась.
Что мне делать?
Неактивен
Вот полный текст ошибки:
ОШИБКА #5540: SQLCODE: -400 Сообщение: Unexpected error occurred: <DIVIDE>%0AmDuncommitted+17^%sqlcq.ASV.224
Неактивен
CacheSQL это тоже совсем не MySql - вам надо обратится в сообщества или поддержку данной СУБД
Неактивен
Спасибо большое! Уже разобралась.)
Неактивен
Страниц: 1