none
SSIS Wahr oder Falsch Ausdruck RRS feed

  • Frage

  • Hallo Leute,

    hoffenltich könnt ihr mir schnell helfen. Ich möchte ine Spalte ersetzen, die mir eine 1 oder eine 0 zurückgeben soll, wenn die Bediningung zu trifft, dass der Status des Dokuments nicht in Ablage oder in Zur_Antwort ist und die Frist kleiner ist als das heutige Datum

    meine Bedingung für den Task abgeleitete Spalte sieht wie folgt aus:

    (status != "ABLAGE" || status != "ZUR_ANTWORT" && frist < GETDATE()) ? 1 : 0

    er konvertiert auch ohne probleme jedoch gibt er mich nur 1 zurück keine 0 obwohl ich ca 1000 einträge mit 0 bekommen müsste.

    wisst ihr eventuell wo mein syntaxfehler ist?


    Lösen durch anstarren funktioniert nicht immer LG Chrissy

    Mittwoch, 13. Juni 2012 12:30

Antworten

  • Hallo Chrissy,

    es ist kein Syntaxfehler, sondern ein logischer:

    1. UND geht vor ODER; wie in der Mathematik Punkt vor Strich-Rechnung geht. Du muss den oder Part noch einmal klammen

    ( (status != "ABLAGE" || status != "ZUR_ANTWORT") && frist < GETDATE()) ? 1 : 0

    2. Selbst so ist es noch unlogisch: wenn der Status = "Ablage" ist, ist er auch ungleich "ZUR_Antwort"; die Oder Logik liefert somit immer True. Es müsste also UND statt ODER sein

    ( status != "ABLAGE" && status != "ZUR_ANTWORT" && frist < GETDATE()) ? 1 : 0


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    • Als Antwort markiert 2005Chrissy Mittwoch, 13. Juni 2012 13:00
    Mittwoch, 13. Juni 2012 12:43

Alle Antworten

  • Hi Chrissy,
    kann es sein, dass eine Klammerung der Oder-Bedingungen fehlt, oder hängt der Getdate-Ausdruck nur an dem zweiten Teil?

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    Mittwoch, 13. Juni 2012 12:39
  • Hallo Chrissy,

    es ist kein Syntaxfehler, sondern ein logischer:

    1. UND geht vor ODER; wie in der Mathematik Punkt vor Strich-Rechnung geht. Du muss den oder Part noch einmal klammen

    ( (status != "ABLAGE" || status != "ZUR_ANTWORT") && frist < GETDATE()) ? 1 : 0

    2. Selbst so ist es noch unlogisch: wenn der Status = "Ablage" ist, ist er auch ungleich "ZUR_Antwort"; die Oder Logik liefert somit immer True. Es müsste also UND statt ODER sein

    ( status != "ABLAGE" && status != "ZUR_ANTWORT" && frist < GETDATE()) ? 1 : 0


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    • Als Antwort markiert 2005Chrissy Mittwoch, 13. Juni 2012 13:00
    Mittwoch, 13. Juni 2012 12:43
  • genau das war es...ich danke dir vielmals!

    und @Christoph: Die Getdate ist nur an die Frist gekoppelt


    Lösen durch anstarren funktioniert nicht immer LG Chrissy


    Mittwoch, 13. Juni 2012 13:00