Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Можно ли case в функцию? (число прочтений - 1742 )
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Можно ли case в функцию?
07. Ноября 2007 :: 14:06
Печать  
Код
Выбрать все
Sum(Case
	|	When $ПоследнееЗначение.Клиенты.СрокКредита(СпрК.ID, :ВыбКонПериода)=$ПустойИД Then 0
	|	When Cast($ПоследнееЗначение.Клиенты.СрокКредита(СпрК.ID, :ВыбКонПериода) as int)>0
	|	Then $ПоследнееЗначение.Клиенты.СрокКредита(СпрК.ID, :ВыбКонПериода
	|	Else 0 end) as СрокКредита
 


без SUM выдает данные, но только я её помещая в функцию, то выпадают ошибки
  
Наверх
 
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Можно ли case в функцию?
Ответ #1 - 07. Ноября 2007 :: 15:14
Печать  
Нашел на форуме текст, вроде похоже на мое, попытался сделать подобно все равно ошибки
Код
Выбрать все
MAX(CONVERT(int, CASE WHEN RowN=1 THEN
			CASE WHEN tmp.str6 LIKE tmp.str1+'%' THEN tmp.str1 END
		ELSE CASE WHEN RowN=2 THEN
			CASE WHEN tmp.str6 LIKE tmp.str2+'%' THEN tmp.str2 END
		ELSE CASE WHEN RowN=3 THEN
			CASE WHEN tmp.str6 LIKE tmp.str3+'%' THEN tmp.str3 END
		ELSE CASE WHEN RowN=4 THEN
			CASE WHEN tmp.str6 LIKE tmp.str4+'%' THEN tmp.str4 END
		ELSE CASE WHEN RowN=5 THEN
			CASE WHEN tmp.str6 LIKE tmp.str5+'%' THEN tmp.str5 END
		END END END END END)) as str 

  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Можно ли case в функцию?
Ответ #2 - 07. Ноября 2007 :: 18:21
Печать  
Ответ: можно
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Можно ли case в функцию?
Ответ #3 - 08. Ноября 2007 :: 08:02
Печать  
Может кто подскажет в чем ошибка. хочу все расчеты перенести в запрос. как то не хочется через ТЗ
Код
Выбрать все
	|	MAX(Convert(Int,Case
	|	When $ПоследнееЗначение.Клиенты.СрокКредита(СпрК.ID, :ВыбКонПериода)=$ПустойИД Then 0
	|	When Convert(Int, $ПоследнееЗначение.Клиенты.СрокКредита(СпрК.ID, :ВыбКонПериода))>0
	|	Then Convert(Int, $ПоследнееЗначение.Клиенты.СрокКредита(СпрК.ID, :ВыбКонПериода))
	|	Else 0 end)) as СрокКредита, 


Ошибка: State 42000, native 130, message [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
  
Наверх
 
IP записан
 
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Можно ли case в функцию?
Ответ #4 - 08. Ноября 2007 :: 11:14
Печать  
попробуй так:
select max(f1)
from (
select case ... f1
from ...
)
temp
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать