-2

我有两张桌子。第一个是表Employees,第二个是TimeCard。我正在尝试确定员工何时不在。样品表:

在此处输入图像描述

因此,如果员工姓名符合以下条件,则返回员工姓名:Status= 1 和Date!= '8/27/13'。Employee但是,即使TimeCard表中有多个整数,只要它们不在指定日期,我也只希望返回一次。

4

2 回答 2

0

尝试这个:

SELECT DISTINCT e.employee 
FROM employees e
LEFT JOIN timecard t ON t.employee = e.employee
WHERE e.status = 1 AND (t.date != '8/27/13' OR t.date IS NULL)
于 2013-08-27T17:22:40.187 回答
0

尝试以下操作:

SELECT e.employee FROM employees e 
WHERE status=1 
AND NOT EXISTS ( SELECT 1 FROM timecard t 
                 WHERE t.employee=e.employee 
                 AND t.Date = '8/27/13') 

'8/27/13'仅当 date 是 varchar 列时才起作用。否则,您应该使用更标准的日期格式,例如'2013-8-27'.

编辑:

在 MSSQL'8/27/13'中实际上可以工作,但使用这种表示法仍然不是一个好主意,因为当使用较小的数字时它不是明确的,例如'5/6/7'. 根据谁进入(以及他们来自哪个国家),这可能意味着 2007 年 5 月 6 日,或 2005 年 5 月 7 日或 2007 年 6 月 5 日......

2.编辑

显然,在您组装 SQLfiddle 时准备晚餐不是一个好主意!整件事都是马车。我刚刚修复了它,当然更正了错字,t.Date != '8/27/13'很抱歉造成混乱!在此处查看更正的小提琴:http ://sqlfiddle.com/#!3/26454/1

于 2013-08-27T17:17:27.223 回答