有表tabel1(empno,flag) 和tabel2(empno,other,date)
我想根据flag 和date返回一个数据集.
要求:数据集合包括tabel1中符合flag=1的empno所有记录,如果tabel2没有匹配的记录,other返回null我的sql语句是这样的
SELECT *
FROM Staff s left outer JOIN Attendance a ON s.EmpNo = a.EmpNO
Where s.Active=1 and a.Date=@Date
ORDER BY s.EmpNo执行后,tabel1中符合flag=1的记录但tabel2没有符合date的记录,就不返回任何记录.
大家帮我看看错哪里了
我想根据flag 和date返回一个数据集.
要求:数据集合包括tabel1中符合flag=1的empno所有记录,如果tabel2没有匹配的记录,other返回null我的sql语句是这样的
SELECT *
FROM Staff s left outer JOIN Attendance a ON s.EmpNo = a.EmpNO
Where s.Active=1 and a.Date=@Date
ORDER BY s.EmpNo执行后,tabel1中符合flag=1的记录但tabel2没有符合date的记录,就不返回任何记录.
大家帮我看看错哪里了
FROM Staff s left outer JOIN Attendance a ON s.EmpNo = a.EmpNO
Where s.Active=1 and a.Date=@Date
ORDER BY s.EmpNo你写的根你说的怎么一点也不粘边啊
你说要判断FLAG字段,怎么出来一个Active字段,还有,你怎么执行的这个语句啊,@date是一个变量,赋值怎么可以这样写.即使用的是变量的话,也应该是这样执行吧~
declare @sql varchar(1000)
declare @date datetime
set @sql='SELECT *
FROM Staff s left outer JOIN Attendance a ON s.EmpNo = a.EmpNO
Where s.Active=1 and a.Date='''+@Date+'''
ORDER BY s.EmpNo'
exec(@sql)
FROM Staff s where s.Active=1
ORDER BY s.EmpNo
自己测试下.
4楼的做法我觉得不好,如果staff中有10W个记录,那岂不是要扫描10W次attendance来匹配?