2010-08-12 13 views
0

Besoin d'aide pour comprendre ce que je fais avec la syntaxe ici, s'il vous plaît, aidez-moi! Je n'ai pas seulement besoin de convertir float en décimal, mais j'ai aussi besoin de remplacer les données d'origine en cours de migration vers le même format et les données (dans ce cas) si nécessaire pour correspondre aux données les plus récentes.TSQL, cas, convertir, remplacer fin

,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 

error: Msg 156, Level 15, State 1, Line 1 Incorrect syntax near the keyword 'CASE'.

Merci!

+0

sheesh, c'est une déclaration assez désordonnée. Compte tenu de tout cela en utilisant le seul champ, avez-vous envisagé de le mettre dans un UDF scalaire? De cette façon, vous pouvez construire la valeur progressivement. – RPM1984

+0

N'a pas de sens ce que vous voulez faire quand 'fInvReqMargin' n'est pas null - essayez-vous de convertir la valeur remplacée en une décimale, ou ajoutez la valeur convertie à celle qui a été remplacée (mais les paramètres sont incorrects. .. –

Répondre

0

Le problème est avec la syntaxe CONVERT et REPLACE. Sans voir les données, je ne peux pas déterminer si vous essayez de fournir le paramètre de style à CONVERT. Si vous êtes alors la syntaxe devrait être

CONVERT(DECIMAL (7,7), fInvReqMargin,(REPLACE(fInvReqMargin, fInvReqMargin, INVESTOR_REQUIRED_MARGIN_FC)))