- SQL code
(--作用:获取两个时间之内的所有日期select dateadd(dd,number,'2012-02-01') as timeSerial,datename(weekday,dateadd(dd,number,'2012-02-01'))weekNamefrom master..spt_valueswhere type='p'and dateadd(dd,number,'2012-02-01')<='2012-02-29') TableSerial
- SQL code
(--作用:统计某科室周一 到 周日 ,每日设置预约人数上限--shift 预约设置主表;ID:主键,deptID科室ID--(这2个字段这里暂时没用:BeginTime:起效时间--EndTime终止时间)--shiftDetail 预约设置明细 shiftID:主表对应ID;menCount:每个时段预约人数上限 ;weekID(1..7)--(这里暂时没用:PeriodID 分时段ID)--weekList 星期列表;weekID(1..7) weekName(星期一..星期日)select weekName,sumCount,deptID from weekList,(select sum(menCount) sumCount,weekID,s.deptID from shift s,shiftDetail sd where sd.shiftID = s.id and s.deptID = 3 group by weekID,s.deptID) TempAwhere weekList.weekID = TempA.weekID ) TempB
对上边2个表进行外连接;
- SQL code
select TableSerial.weekName,Isnull( tempB.sumCount,0) sumCount,Isnull( tempB.deptID,3)deptID,TableSerial.timeSerial from (--作用:获取两个时间之内的所有日期select dateadd(dd,number,'2012-02-01') as timeSerial,datename(weekday,dateadd(dd,number,'2012-02-01') ) weekNamefrom master..spt_valueswhere type='p'and dateadd(dd,number,'2012-02-01')<='2012-02-29') TableSerial left join(--作用:统计某科室周一 到 周日 ,每日设置预约人数上限--shift 预约设置主表;ID:主键,deptID科室ID--(这2个字段这里暂时没用:BeginTime:起效时间--EndTime终止时间)--shiftDetail 预约设置明细 shiftID:主表对应ID;menCount:每个时段预约人数上限 ;weekID(1..7)--(这里暂时没用:PeriodID 分时段ID)--weekList 星期列表;weekID(1..7) weekName(星期一..星期日)select weekName,sumCount,deptID from weekList,(select sum(menCount) sumCount,weekID,s.deptID from shift s,shiftDetail sd where sd.shiftID = s.id and s.deptID = 3 group by weekID,s.deptID) TempAwhere weekList.weekID = TempA.weekID ) TempBon TempB.weekName = TableSerial.weekName
现在存在的情况是,对应TableSerial时间序列表,
TempB BeginTime:起效时间--EndTime终止时间,
可能是一个记录,也可能没有记录,也可能有好几个记录,而且情况不定。
如果出现空白记录,我需要填充,怎么样实现呢? 怎么样实现对TableSerial的左连接
比如:
TableSerial:'2012-02-01'---'2012-02-29'
TempB :
'2012-01-26'---'2012-02-5'
'2012-02-08'---'2012-02-10'
'2012-02-20'---'2012-03-10'
有点小急,谢谢
------解决方案--------------------
空白也就是为null的情况么??
如果是这样可以用isnull(字段,为空后怎么处理)
例如:isnull(col1,0)--如果col1为空,则用0替代col1对应的值
------解决方案--------------------
你干脆拿第二段代码生成的结果集与master..spt_values进行联接查询。