DeptID PeriodID MenCount shiftID weekid AppointTime AlreadyCount
NULL NULL 3 10 3 NULL 1
NULL NULL 3 3 3 NULL 2
NULL NULL 10 10 10 NULL 1
NULL NULL 20 8 3 NULL 1
NULL NULL 22 10 1 NULL 1
NULL NULL 23 11 2 NULL 1
NULL NULL 25 8 4 NULL 1
NULL NULL 30 19 3 NULL 1
NULL NULL 30 8 3 NULL 1
NULL NULL 33 10 2 NULL 1
NULL NULL 40 8 3 NULL 1
NULL NULL 44 10 1 NULL 1
NULL NULL 50 19 4 NULL 1
NULL NULL 55 19 5 NULL 1
NULL NULL 55 9 4 NULL 1
NULL NULL 88 10 1 NULL 1
NULL NULL 88 10 7 NULL 1
NULL NULL 88 9 1 NULL 1
NULL NULL 345 6 1 NULL 2
3 1 25 8 4 2012-02-02 00:00:00.000
3 2 25 8 4 2012-02-02 00:00:00.000
- SQL code
declare @AppointTime datetime,@DeptID Nvarchar(50),@ShiftID Nvarchar(50),@WeekID Nvarchar(50)set @deptID='3'set @AppointTime='2012-2-2'set @ShiftID='8'set @WeekID='4'select count(*) AlreadyCount,app.Deptid,app.PeriodID,sd.MenCount ,shiftID ,sd.WeekID,app.AppointTimefrom ShiftDetail sd left join AppointList Appon [email protected] and [email protected] and app.PeriodID=sd.PeriodID and [email protected]group by app.AppointTime,app.DeptID,app.PeriodID ,sd.MenCount,shiftID,sd.WeekIDorder by app.periodID
我都指定 @ShiftID='8' @WeekID='4',为什么结果里边这么多不符合的
------解决方案--------------------
好多null,好壮观啊
------解决方案--------------------
因为 left join
------解决方案--------------------
on,where毫无疑问可以一起使用。
a left join b 结果:a全集, b交集
on:ab相交条件,决定b返回什么数据,如无where条件a肯定全部返回。
where:对left join结果进一步筛选。
我所说的逻辑就是你希望a如何b相交(on条件),最后期望得到什么数据(where条件)。
------解决方案--------------------
------解决方案--------------------
好好看看再改。
------解决方案--------------------
我建议楼主先执行
- SQL code
select app.Deptid,app.PeriodID,sd.MenCount ,shiftID ,sd.WeekID,app.AppointTimefrom ShiftDetail sd left join AppointList Appon [email protected] and [email protected] and app.PeriodID=sd.PeriodID and [email protected]
------解决方案--------------------
select count(*) AlreadyCount,app.Deptid,app.PeriodID,sd.MenCount ,shiftID ,sd.WeekID,app.AppointTime
from ShiftDetail sd inner join AppointList App
on [email protected] and [email protected] and app.PeriodID=sd.PeriodID and [email protected]
group by app.AppointTime,app.DeptID,app.PeriodID ,sd.MenCount,shiftID,sd.WeekID
order by app.periodID