2016-05-26 7 views
0
((DT_STR,20,1252)OccuranceRegion == "US" && ((DT_STR,20,1252)LegalEntity == "AECB" || (DT_STR,20,1252)LegalEntity == "FSB" || (DT_STR,20,1252)LegalEntity == "Both")) 
? DATEADD("day",30,CapCreationDt) : (ISNULL(MaxofRevSCIAndSCI) ? (DT_DATE)"1900-01-01" : MaxofRevSCIAndSCI) 

Immer, wenn ich Bedingungen setzen, wieWas ist falsch mit diesem SSIS abgeleitet Expression wird

OccuranceRegion == "US" AND 
LegalEntity is null 

Das Ergebnis, wie NULL kommt, habe ich auch überprüft, um den Wert für MaxofRevSCIAndSCI, es ist nicht null. Warum geht es nicht in anderen Teilen?

+0

MySQL oder MS SQL Server? Bitte nicht gekennzeichnete Produkte nicht kennzeichnen. – jarlh

+0

Ich entschuldige mich. Passt nur von dieser Zeit auf. – Ankit

Antwort

0

Jede Funktion von NULL (außer den spezialisierten, "NULL-killing" -Funktionen ISNULL und dergleichen) ergibt NULL. Sie vergleichen LegalEntity nur mit String-Konstanten. Diese Ausdrücke werden zu NULL ausgewertet, wenn LegalEntity NULL ist. Sie müssen die NULL-Werte in LegalEntity durch etwas anderes ersetzen. Wahrscheinlich eine abgeleitete Spalte Upstream

ISNULL(LegalEntity) ? "##NULL#' : LegalEntity 

wäre einfacher, als diese sich in den Ausdruck zu tun (weil SSIS Ausdrücke scheußlich zu debuggen sind).

+0

Ich würde mich freuen, wenn Sie es ausarbeiten könnten. Diese Bedingung funktioniert gut, wenn ich AECB als LegalEntity überlasse. Ich plane, ReplaceNULL anstelle von ISNULL zu verwenden. – Ankit

+0

Es heißt "Null Ausbreitung". Wenn LegalEntity NULL ist, ist das Ergebnis des Tests gegen einen Wert NULL (nicht False, wie Sie es erwarten würden, wenn es nicht AECB, FSB oder Both wäre). ReplaceNull ist in Ordnung, es ist das SSIS-Äquivalent von SQL ISNULL. – SebTHU