Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初学者sql连接查询_Sql - Fatal编程技术网

初学者sql连接查询

初学者sql连接查询,sql,Sql,我对sql非常陌生,我正在努力创建一个查询。我有一个餐桌部的员工 DeptId EmployeeId Salary JoinDate (DD-MM-YYYY) ------------------------------------------------------------ 1 77 8787 11-09-2010 1 87 9877

我对sql非常陌生,我正在努力创建一个查询。我有一个餐桌部的员工

    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
最好的方法是什么?我应该做自我加入吗??或者有没有其他办法?有人能给我提点建议吗


吉娜。

SQL
CASE
是你的朋友

您可以通过以下方式进行操作:

 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

选择DeptId,CASE WHEN MIN(Salary)>8000和MAX(JoinDate)既然你说你是新来的,我听说过这本书的好处,在10分钟内自学SQL。另外,由于您想创建一个可能会复制数据的表,所以您可能想检查一下数据库的设计是否只针对普通人。是的,12是一个月。我能够创建查询的第一部分,但缺少groupby,这就是为什么它不起作用。我现在要试试。非常感谢你@BenoitOk。这是一种魅力!!但现在我意识到deptName还有一列,我想再检查一下是真是假。该DeptName应该是Admin或IT。我试图用类似DeptName的条件扩展上述内容,但我得到了异常00979。00000-“不是一个GROUP BY表达式”知道为什么吗???@Jeena:如果每个DeptId只有一个可能的DeptName值,那么在GROUP BY子句中包含
DeptName
。问题是DeptName可以有多个值,但是如果所有的DeptName=“Admin”和MIN(Salary)>8000和MAX(JoinDate)都使用了
HAVING COUNT,我想得到true(不同的部门名称)=1
以及MAX(部门名称)=“Admin”