2017-10-20 11 views
1

J'essaye d'implémenter le composant de division conditionnel dans mon paquet de SSIS. J'ai besoin de diviser les enregistrements en fonction de l'année. J'ai besoin d'extraire des données pour les 5 dernières années et j'ai besoin de le diviser avant de le vider à la destinationexpression dans le composant fractionné dans SSIS donnant l'erreur

periodenddate est le champ datetime. J'ai besoin d'extraire la partie de l'année de ce champ et de la comparer à l'année réelle comme mentionné dans l'expression. Je reçois une erreur pour une expression non valide. Quelqu'un pourrait-il me dire où vais-je mal

L'expression que je utilise est pour exemple

periodEndDate == YEAR(GETDATE()) 

S'il vous plaît trouver l'erreur jointe

enter image description here

Deuxième erreur

enter image description here

erreur Troisième

enter image description here

+0

'periodenddate' est en minuscules, pas en chameau! – MiguelH

+0

J'ai essayé de mettre des minuscules en train d'obtenir une erreur. S'il vous plaît voir la seconde erreur des titres d'écran. Également essayé opérateur égal unique – Tom

+0

Il est difficile de répondre à une question lorsque vous avez essayé trois choses différentes, a obtenu trois erreurs différentes, mais vous ne montrez le code que pour une tentative. La raison de l'erreur dans le code que vous affichez est due aux minuscules, car SSIS est sensible à la casse. Corrigez cela, montrez le code que vous utilisez maintenant et l'erreur que vous obtenez, et il pourrait être possible de vous aider davantage. –

Répondre

1

Si vous voulez que le numéro de l'année d'il y a un an, vous devez utiliser:

YEAR([periodenddate]) = YEAR(GETDATE()) - 1 
YEAR([periodenddate]) = YEAR(GETDATE()) - 2 
etc. 

Avoir la « -1 » dans les parenthèses de la fonction Année() vous donnera la mauvaise réponse à tout le moins.

Notez que vous avez différentes erreurs avec chaque version de votre code:

  • La première image montre un défaut de trouver un terrain en raison de SSIS étant sensible à la casse
  • La seconde image montre une défaillance due à comparaison d'un datetimestamp à un entier
  • La troisième image montre une erreur avec l'expression "GETDATE() - 1", qui se trouve sur un composant d'expression conditionnelle différent de celui des deux premières images.