TSQL, регистр, преобразование, замена конца

Нужна помощь в понимании того, что я делаю с синтаксисом здесь, пожалуйста, помогите! Мне нужно не только преобразовать число с плавающей запятой в десятичное, но и переопределить исходные данные, переносимые в тот же формат и данные (в данном случае), где это необходимо, чтобы соответствовать более новым данным.

,CASE  
   WHEN fInvReqMargin IS NOT NULL THEN  
     (CONVERT(DECIMAL(7, 7), fInvReqMargin)(REPLACE(fInvReqMargin, fInvReqMargin, INVESTOR_REQUIRED_MARGIN_FC)))
   ELSE NULL 
 END as INVESTOR_REQUIRED_MARGIN_FC

ошибка: сообщение 156, уровень 15, состояние 1, строка 1. Неверный синтаксис рядом с ключевым словом «CASE».

Благодарю вас!


person JMS49    schedule 12.08.2010    source источник
comment
господи, это довольно беспорядочное заявление. учитывая, что все это использует одно поле, рассматривали ли вы возможность поместить его в скалярную UDF? таким образом, вы можете постепенно наращивать ценность.   -  person RPM1984    schedule 13.08.2010
comment
Не имеет никакого смысла, что вы хотите сделать, когда fInvReqMargin не равно нулю - вы пытаетесь преобразовать замененное значение в десятичное число или добавить преобразованное значение к замененному (но параметры неверны...   -  person OMG Ponies    schedule 13.08.2010


Ответы (1)


Проблема связана с синтаксисом CONVERT и REPLACE. Не видя данных, я не могу определить, пытаетесь ли вы указать параметр стиля для КОНВЕРТИРОВАТЬ. Если да, то синтаксис должен быть

CONVERT( DECIMAL ( 7,7 ), fInvReqMargin,(REPLACE(fInvReqMargin, fInvReqMargin, INVESTOR_REQUIRED_MARGIN_FC))) 
person Dave Barker    schedule 13.08.2010