2

我对 sql 很陌生,我正在努力创建一个查询。我有一张桌子 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 和一个新的 boolean 列创建一个新表,如果同一部门中的所有员工在 01-12-2010(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 回答