2

私はSQLを初めて使用し、1つのクエリを作成するのに苦労しています。テーブルDept_Employeeがあります

    DeptId    EmployeeId    Salary        JoinDate (DD-MM-YYYY)
    ------------------------------------------------------------
    1            77         8787           11-09-2010
    1            87         9877           12-08-2011
    1            76         9544           08-11-2010
    2            33         9999           12-05-2010

そして、DeptId と、同じ部門のすべての従業員が 2010 年 12 月 1 日 (12 月 1 日) より前に joindate を持っていて、給与が 8000 より大きい場合に true を返す新しい列ブール値を使用して、これから新しいテーブルを作成したいと考えています。この場合、結果は

    DeptId     NewEmployees
    ------------------------
    1            False
    2            True

それを行う最良の方法は何ですか?セルフジョインするべきですか??または、それを行う他の方法はありますか?誰か何か提案してください...

ジーナ。

4

1 に答える 1

5

SQLCASEはこのための友達です。

次の方法で実行できます。

 SELECT DeptId, CASE WHEN MIN(Salary) > 8000 AND MAX(JoinDate) <= DATE'2010-12-01' THEN True
                ELSE FALSE
                END AS NewEmployees
   FROM Dept_Employee
  GROUP BY DeptId

質問では、12 が月、01 が日であると想定したことに注意してください。

于 2013-02-11T12:44:51.843 に答える