SELECT  b.[datetime] AS SetDate,a.OnDutyTime,a.OffDutyTime,a.isLate,a.LateTime,a.isLeave,a.leaveTime,a.isabsent FROM WorkAttendence_DataTwo a left JOIN  WorkAttendence_DaySetting b  ON (b.[DateTime] NOT IN (SELECT WaDate FROM WorkAttendence_DataTwo WHERE  ((WaDate>=@BeginDate) AND (WaDate<=@CurrentDate)) AND (UserID=@UserID))) and ((b.[DateTime]>=@BeginDate) AND (b.[DateTime]<=@CurrentDate))
换成左连接看看

解决方案 »

  1.   

    谢谢 zyg0
    inner join 是这样显示的2005-10-1
    2005-10-1
    2005-10-2
    2005-10-2
    .
    .
    .left join 是这样显示的
    2005-10-1
    2005-10-2
    .
    .
    .
    2005-10-1
    2005-10-2只是显示的顺序不一样
      

  2.   

    SELECT  b.[datetime] AS SetDate,a.OnDutyTime,a.OffDutyTime,a.isLate,a.LateTime,a.isLeave,a.leaveTime,a.isabsentFROM WorkAttendence_DataTwo a right join  WorkAttendence_DaySetting b  ON (b.[DateTime]<>a.WaDate)WHERE  ((a.UserID=@UserID) AND ((b.[DateTime]>=@BeginDate) AND (b.[DateTime]<=@CurrentDate)) AND (b.needDuty=1)) ON (b.[DateTime]<>a.WaDate) 这个当线索列也不可以,也是有重复。但是用  ON (b.[DateTime]=a.WaDate) 的出的结果就不显示重复的行了。