当前位置: 代码迷 >> Sql Server >> 如何样填补空白的记录
  详细解决方案

如何样填补空白的记录

热度:156   发布时间:2016-04-27 14:06:42.0
怎么样填补空白的记录
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进行联接查询。
  相关解决方案