Ошибка MSSQL

1. barat 25.05.23 10:51 Сейчас в теме
Добрый день. При обработке данных появляется ошибка:

Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Выражения Case могут быть вложенными только до уровня 10.

В отладчике нашел такой кусок запроса:

|	ВЫБОР
			|		КОГДА втРасчетПоСреднегодовой.ДатаСведений = ДАТАВРЕМЯ(1, 1, 1)
			|			ТОГДА ВЫБОР
			|		 КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0101 <> 0
			|			 ТОГДА втРасчетПоСреднегодовой.ГодРасчета
			|			 ИНАЧЕ ВЫБОР
			|		  КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0102 <> 0
			|			  ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 1)
			|			  ИНАЧЕ ВЫБОР
			|		   КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0103 <> 0
			|			   ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 2)
			|			   ИНАЧЕ ВЫБОР
			|		    КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0104 <> 0
			|			    ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 3)
			|			    ИНАЧЕ ВЫБОР
			|		     КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0105 <> 0
			|			      ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 4)
			|			      ИНАЧЕ ВЫБОР
			|		      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0106 <> 0
			|			      ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 5)
			|			      ИНАЧЕ ВЫБОР
			|		       КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0107 <> 0
			|			       ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 6)
			|			       ИНАЧЕ ВЫБОР
			|		        КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0108 <> 0
			|			        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 7)
			|			        ИНАЧЕ ВЫБОР
			|		         КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0109 <> 0
			|			         ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 8)
			|			         ИНАЧЕ ВЫБОР
			|		          КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0110 <> 0
			|			          ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 9)
			|			          ИНАЧЕ ВЫБОР
			|		           КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0111 <> 0
			|			          ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 10)
			|			          ИНАЧЕ ВЫБОР
			|		            КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0112 <> 0
			|			           ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 11)
			|			           ИНАЧЕ ВЫБОР
			|		             КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа3112 <> 0
			|			           ТОГДА КОНЕЦПЕРИОДА(втРасчетПоСреднегодовой.ГодРасчета, ГОД)
			|		             КОНЕЦ
			|		            КОНЕЦ
			|		           КОНЕЦ
			|		          КОНЕЦ
			|		         КОНЕЦ
			|		        КОНЕЦ
			|		       КОНЕЦ
			|		      КОНЕЦ
			|		     КОНЕЦ
			|		    КОНЕЦ
			|		   КОНЕЦ
			|		  КОНЕЦ
			|		КОНЕЦ
			|		ИНАЧЕ втРасчетПоСреднегодовой.ДатаСведений
			|	КОНЕЦ КАК ДатаСведений
Показать


Связана ли ошибка с запросом, у кого какие мысли, в какую сторону копать?
По теме из базы знаний
Найденные решения
2. RustamZz 25.05.23 11:29 Сейчас в теме
(1) Связана. Переписать без
Иначе Выбор
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 25.05.23 11:29 Сейчас в теме
(1) Связана. Переписать без
Иначе Выбор
3. barat 25.05.23 14:47 Сейчас в теме
(2) Спасибо база типовая erp ошибку зарегистрировали, номер ошибки 00-00539242
Maruska77; +1 Ответить
6. Bob_Dobr 07.07.23 09:50 Сейчас в теме
(3) Я смотрю они там много чего регистрируют, только тут на форуме ребята бывает и шустрее решают проблемы.
4. user733004 25.05.23 21:52 Сейчас в теме
|// Дата сведений - первый ненулевой месяц.
| ВЫБОР
| КОГДА втРасчетПоСреднегодовой.ДатаСведений = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ВЫБОР
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0101 <> 0
| ТОГДА втРасчетПоСреднегодовой.ГодРасчета
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0102 <> 0
| ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 1)
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0103 <> 0
| ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 2)
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0104 <> 0
| ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 3)
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0105 <> 0
| ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 4)
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0106 <> 0
| ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 5)
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0107 <> 0
| ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 6)
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0108 <> 0
| ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 7)
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0109 <> 0
| ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 8)
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0110 <> 0
| ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 9)
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0111 <> 0
| ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 10)
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0112 <> 0
| ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 11)
| КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа3112 <> 0
| ТОГДА КОНЕЦПЕРИОДА(втРасчетПоСреднегодовой.ГодРасчета, ГОД)
| КОНЕЦ
| ИНАЧЕ
| втРасчетПоСреднегодовой.ДатаСведений
| КОНЕЦ КАК ДатаСведений,
Показать
Bob_Dobr; akmich; +2 Ответить
5. user1192644 25.05.23 22:18 Сейчас в теме
Вот так сработал

|	ВЫБОР
			|		КОГДА втРасчетПоСреднегодовой.ДатаСведений = ДАТАВРЕМЯ(1, 1, 1)
			|			ТОГДА ВЫБОР
			|		 КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0101 <> 0
			|			 ТОГДА втРасчетПоСреднегодовой.ГодРасчета
			|		  КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0102 <> 0
			|			  ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 1)
			|		   КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0103 <> 0
			|			   ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 2)
			|		    КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0104 <> 0
			|			    ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 3)
			|		     КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0105 <> 0
			|			      ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 4)
			|		      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0106 <> 0
			|			      ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 5)
			|		       КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0107 <> 0
        	|			       ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 6)
			|		        КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0108 <> 0
			|			        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 7)
			|		         КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0109 <> 0
			|			         ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 8)
			|		          КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0110 <> 0
			|			          ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 9)
			|		           КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0111 <> 0
			|			          ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 10)
			|		            КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0112 <> 0
			|			           ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 11)
			|		             КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа3112 <> 0
			|			           ТОГДА КОНЕЦПЕРИОДА(втРасчетПоСреднегодовой.ГодРасчета, ГОД)
			|		КОНЕЦ
			|		ИНАЧЕ втРасчетПоСреднегодовой.ДатаСведений
			|	КОНЕЦ КАК ДатаСведений,
Показать
_mrWinders_; +1 Ответить
7. _mrWinders_ 15.08.23 15:10 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот