2016-06-01 13 views
0

Ich versuche, eine Fallanweisung zu schreiben, aber in einige Probleme zu laufen. Es kehrt incorrect syntax near '=' CASE-Anweisung Syntaxfehler

SELECT 
    customer_name, 
    customer_initial_purchase_date, 
    customer_purchase_date, 
    CASE 'repeat_cust' 
     WHEN 
      customer_initial_purchase_date = customer_purchase_date 
     THEN 
      'new_cust' 
     ELSE 
      'repeat_cust' 
    END 
FROM 
    sales 

Antwort

1
SELECT customer_name 
    ,customer_initial_purchase_date 
    ,customer_purchase_date 
    ,CASE WHEN customer_initial_purchase_date = customer_purchase_date 
      THEN 'new_cust' 
      ELSE 'repeat_cust' 
    END 
FROM sales 
0

Es sieht aus wie Sie durch die zwei verschiedenen Möglichkeiten der Verwendung von case expressions verwechselt werden könnte. Eine „einfache“ genannt ist wie:

CASE <expression> WHEN <match 1> THEN <result 1> 
    WHEN <match 2> THEN <result 2> 
    ELSE <else result> 
END 

Hinweis, es gibt keine Booleschen Ausdrücken in der einfachen case Ausdruck. Als SQL Server sah CASE 'repeat_cust' es dachte, es handelte sich um die einfache case Ausdruck und wurde durch die = Zeichen später verwirrt.

Die "gesucht" Version ist:

CASE WHEN <boolean expression 1> THEN <result 1> 
    WHEN <boolean expression 2> THEN <result 2> 
    ELSE <else result> 
END 

Einfach immer als gesucht neu geschrieben werden, aber nicht umgekehrt:

CASE WHEN <expression> = <match 1> THEN <result 1> 
    WHEN <expression> = <match 2> THEN <result 2> 
    ELSE <else result> 
END