2017-03-13 17 views
1

複数の条件を含むSELECTステートメントがあります。ここでselectステートメントの複数の条件

は、クエリのために私のコードです:

SELECT 
    G.CLOSED_MONTH, EE.BASIC_SALARY, V.EMPLOYEE_NO, G.CLOSED_YEAR 
    CASE 
     WHEN ((G.CLOSED_YEAR = YEAR (GETDATE()) AND G.CLOSED_MONTH <= MONTH (GETDATE()) 
      THEN EE.BASIC_SALARY) 
     WHEN (G.CLOSED_YEAR BETWEEN EE.DATE_JOINED AND YEAR (GETDATE()) 
      THEN CASE 
        WHEN V.ACTIVITY_TYPE = '0' 
        THEN EE.BASIC_SALARY - V.ACTIVITY_VALUE 
        ELSE EE.BASIC_SALARY + V.ACTIVITY_VALUE 
       END) 
     ELSE ((G.CLOSED_YEAR = YEAR (EE.DATE_JOINED) AND G.CLOSED_MONTH >= MONTH (EE.DATE_JOINED) 
     THEN CASE WHEN V.ACTIVITY_TYPE = '0' 
     THEN EE.BASIC_SALARY - V.ACTIVITY_VALUE 
    ELSE 
     EE.BASIC_SALARY + V.ACTIVITY_VALUE 
    END) 
    END AS NEW_BASICSALARY 
FROM 
    GENERAL_SPECIFICATION G 
JOIN 
    EMPLOYEE_EMPLOYMENT EE ON G.COMPANY_CODE = EE.COMPANY_CODE 
JOIN 
    V_EMPLOYEE_PAYACT V ON EE.EMPLOYEE_ID = V.EMPLOYEE_ID 

私は、クエリを実行しようとすると、それがエラーを取得し続け:

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'CASE'.

+0

文字コードごとに行ごとにコードを理解しようとすることをお勧めします。あなたはもっと学び、この投稿は決して起こらなかったでしょう:) – JohnOsborne

+0

あなたの 'CASE'コードは完全に間違っています - 私はそれを正しくフォーマットすることもできませんでした.....あなたは一番外側の' CASE'を持っています。 .. THEN ... '節 - しかし、あなたは突然、最後の' ELSE'の後に 'THEN ......'を追加しています。** **正しく書式設定して**あなたのコードをインデントしてみてくださいどの部分が 'CASE'、' WHEN'などに属していますか?ちょうど一致しないものがあることがわかります。... –

+1

@marc_sが正しいです。カンマを追加しても、エラーが多く発生します。私はCodeFlavasのアドバイスを受けてエラーを処理します –

答えて

2

あなたが最初の前に「」不足していますケース

関連する問題