Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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_Sql Server_Sql Server 2008_Sql Server 2005 - Fatal编程技术网

Sql 表联接未返回准确的结果;你知道为什么吗?

Sql 表联接未返回准确的结果;你知道为什么吗?,sql,sql-server,sql-server-2008,sql-server-2005,Sql,Sql Server,Sql Server 2008,Sql Server 2005,每年,我们部门都会向员工征求捐款,以帮助支持癌症研究、药物和酒精等方面的研究 我们已经建立了一个系统,帮助员工减轻供款压力 目前,我们有与我目前拥有的这个问题相关的表格 它们是emp、dept和贡献表 Emp表包含我们组织中所有员工的列表 Dept表包含部门列表 最后,每次员工进行供款时,员工的ID和供款日期戳都会记录在供款表中 无论每位员工是否在供款,都必须填写此表。员工可以选择供款,或者勾选“我现在不想供款”框 我的任务是提供一份尚未填写表格的员工名单 如果员工ID在emp表上,但不在当前y

每年,我们部门都会向员工征求捐款,以帮助支持癌症研究、药物和酒精等方面的研究

我们已经建立了一个系统,帮助员工减轻供款压力

目前,我们有与我目前拥有的这个问题相关的表格

它们是emp、dept和贡献表

Emp表包含我们组织中所有员工的列表

Dept表包含部门列表

最后,每次员工进行供款时,员工的ID和供款日期戳都会记录在供款表中

无论每位员工是否在供款,都必须填写此表。员工可以选择供款,或者勾选“我现在不想供款”框

我的任务是提供一份尚未填写表格的员工名单

如果员工ID在emp表上,但不在当前yeardate_印章的供款表上,则该员工未填写表格

到目前为止,我的查询返回的emp表中未填写表单的员工不到一半。我们希望此代码返回emp表中当前年度尚未在供款表中的员工列表

现在,由于缴款季节从2012年11月27日开始,我们希望此查询返回emp表上的所有员工

非常感谢你的帮助

SELECT  e.lastname, e.firstname,CASE active WHEN 1 then 'Yes'WHEN 0 then 'No' else 'other'END
FROM contributions c
LEFT JOIN emp e ON e.employee_id = c.employee_id
INNER JOIN dept d ON d.dept_code = e.dept_code
WHERE Year(c.date_stamp) <> '2010' OR Year(c.date_Stamp) <> '2011' OR Year(c.date_Stamp) <> '2012'
GROUP BY e.lastname,e.firstname, e.employee_id, active
ORDER By e.lastname;

如果我理解正确的话,你需要这样的东西

select
    e.lastname, e.firstname
from emp as e
where
    e.employee_id not in
    (
         select c.employee_id
         from contributions as c
         where c.date_stamp >= convert(datetime, '20121127', 112)
    )
尝试使用已存在的

选择e.lastname、e.firstname、1时为活动大小写,然后选择0时为“是”,然后选择“否”或“其他”结束 来自emp e,d部门 其中d.dept\u代码=e.dept\u代码 并且不存在从c.employee_id=e.employee_id的供款中选择“x”


希望对您有所帮助。

Yeardate返回int。。。为什么不把一个where条件,比如Yeardate>2012,也看看EXISTS语句。为了考虑贡献表,我们可以在it@IoanaIonasek是的,但在这种情况下,我们需要捐款表中没有的所有记录,因此,我认为《不在》对那些阅读我们的问题的人来说更清楚:非常感谢专家们的及时回复。我真的很感激@Godfre,你的代码运行得很好,Roman Pekar的工作得更好,因为它捕获了emp表中的所有记录。ChidiOkeh,没问题。