Comment puis-je obtenir de Flux de Données SSIS de mettre '0.00' dans un fichier plat?

J'ai un package SSIS avec un Flux de Données qui prend un ADO.NET source de données (juste une petite table), exécute une requête select*, et les sorties les résultats de la requête dans un fichier plat (j'ai aussi essayé simplement de tirer l'ensemble de la table et non pas à l'aide d'un select SQL).

Le problème est que la source de données tire une colonne qui est un Argent de type de données, et si la valeur n'est pas nulle, il s'agit dans le texte de fichier plat très bien (comme "123.45"), mais lorsque la valeur est zéro, il apparaît dans le fichier plat de destination '.00'. J'ai besoin de savoir comment obtenir le zéro en arrière dans le fichier plat.

J'ai essayé différents types de données pour la sortie (dans le Gestionnaire de connexions de Fichiers Plats), dont la monnaie et de la chaîne, mais cela ne semble avoir aucun effet.

J'ai essayé un cas relevé dans mon select, comme ceci:

  CASE WHEN columnValue = 0 THEN 
     '0.00' 
  ELSE 
      columnValue 
  END

(encore des résultats en ".00')

J'ai essayé de variations sur ce comme ceci:

 CASE WHEN columnValue = 0 THEN
     convert(decimal(12,2), '0.00') 
 ELSE 
     convert(decimal(12,2), columnValue) 
 END

(Encore des résultats en ".00')

et:

 CASE WHEN columnValue = 0 THEN
     convert(money, '0.00') 
 ELSE 
     convert(money, columnValue) 
 END

(résultats en ".0000000000000000000')

Ce stupide petit problème est killin' me. Quelqu'un peut-il me dire comment obtenir un zéro Argent de type de données valeur de base de données dans un fichier plat comme '0.00'?

J'aimerais savoir la cause de ce problème - je ne suis pas vraiment à l'aise avec la Colonne Dérivée hack.

OriginalL'auteur theog | 2010-05-19