2017-07-16 14 views
0
SELECT * 
CASE 
    WHEN (Employees.End_Date is null) 
THEN select 
     EmpId, 
     Emp_Name, 
     Salary , 
     Start_date , 
     End_dat , 
     DATEDIFF(DATE_ADD(Start_Date, INTERVAL 30 DAY), Start_Date) * Salary/30 as 'Total_Salary' 
    from Employees 
ELSE Select 
     EmpId, 
     Emp_Name, 
     Salary , 
     Start_date , 
     End_date , 
     DATEDIFF(End_Date, Start_Date) * Salary/30 as 'Total_Salary' 
    from Employees 
END 
From Employees; 

このクエリのエラーは解決されていません。クエリケースの選択問題

私は、テーブルに終了日がNULLであるかどうかに基づいてステートメントを区別しようとしています。

+3

エラーを解決しようとするときはいつでも、それらのエラーは、問題に含まれるべきです。また、タイトルは「Select case case issue」よりもよく選択する必要があります。これにより、同じ問題がある場合に他の人が簡単に質問を見つけることができます。 –

答えて

0

このようにcase節は機能しません。以下のようにクエリを大幅に単純化することができます。また、カラム名とテーブル名は、一重引用符ではなく、バックダニを使用して引用されます。

SELECT 
    `EmpId`, 
    `Emp_Name`, 
    `Salary`, 
    `Start_date`, 
    `End_dat`, 
    IF(`End_Date` is null, 
     DATEDIFF(DATE_ADD(`Start_Date`, INTERVAL 30 DAY), `Start_Date`) * `Salary`/30, 
     DATEDIFF(`End_Date`, `Start_Date`) * `Salary`/30) as `Total_Salary` 
FROM `Employees` 
0

これを試してみてください:

SELECT EmpId, 
     Emp_Name, 
     Salary , 
     Start_date , 
     End_dat , 
    CASE 
     WHEN (Employees.End_Date is null) 
    THEN DATEDIFF(DATE_ADD(Start_Date, INTERVAL 30 DAY), Start_Date) * Salary/30 
    ELSE DATEDIFF(End_Date, Start_Date) * Salary/30 END AS Total_Salary 

From Employees;