当前位置: 代码迷 >> Sql Server >> 这几天在大家帮助下,终于写好了。解决方案
  详细解决方案

这几天在大家帮助下,终于写好了。解决方案

热度:137   发布时间:2016-04-27 14:05:25.0
这几天在大家帮助下,终于写好了。
对于大家可能简单,我写3天。 问了好几个问题,非常感谢大家帮助

时间序列生成
http://topic.csdn.net/u/20120226/12/35559e18-9424-4c9a-86f7-584df2739111.html

在存储过程里边,这么把查询出来的表,一条条遍历,取出想要的数据
http://topic.csdn.net/u/20120228/13/3d87112e-9f66-442c-8cb9-ea5972946fc5.html


怎么样把存储过程返回的表 并 起来
[url=]http://topic.csdn.net/u/20120228/08/b162ac93-4496-4658-96fe-4f22767d55c7.html[/url]

为什么用变量后,就查不出结果
http://topic.csdn.net/u/20120228/19/61ddf493-e3ea-4912-be5e-40901f35e3d0.html




SQL code
CREATE PROCEDURE P_Search_ShitfList@S_BeginTime datetime ,--开始时间  是由查询的医生提供@S_EndTime datetime ,--结束时间@DeptID NVarChar --部门编号ASdeclare @ShiftID intdeclare Shift_Cur cursor  for select id  from shift where deptID= @DeptID  ---cancelcreate table #T1(weekName Nvarchar(50),sumCount Nvarchar(50),deptID Nvarchar(50),timeSerial datetime,actualCount Nvarchar(50),beginTime Nvarchar(50),endTime Nvarchar(50))open Shift_Curfetch next from Shift_Cur into @ShiftIDwhile @@fetch_status=0begin   --exec P_Search_Shitf '2012-02-01','2012-02-28','3','8'   --print ltrim(str(@ShiftID))   insert into #T1 exec P_Search_Shitf @S_BeginTime,@S_EndTime,@DeptID,@ShiftID   fetch next from Shift_Cur into @ShiftIDendselect TableSerial.timeSerial,#T1.*  from (--作用:获取两个时间之内的所有日期--表别名:TableSerial--字段名:timeSerialselect    dateadd(dd,number,@S_BeginTime) as timeSerialfrom  master..spt_valueswhere  type='p'and    dateadd(dd,number,@S_BeginTime)<[email protected]_EndTime)  TableSerial left join #T1 on TableSerial.timeSerial = #T1.timeSerial--select * from #T1 order by timeSerialclose Shift_Curdeallocate Shift_CurGO


SQL code
CREATE PROCEDURE P_Search_Shitf@S_BeginTime datetime ,--开始时间  是由查询的医生提供@S_EndTime datetime ,--结束时间@DeptID NVarChar(10) ,--部门编号@ShiftID NVarChar(10)AS--作用:查询出一段时间,每日预约人数上限,实际预约人数select ShiftSet.weekName,sumCount,ShiftSet.deptID,ShiftSet.timeSerial,actualCount,BeginTime,EndTime from(select TableSerial.weekName,Isnull( tempB.sumCount,0) sumCount,tempB.deptID deptID,TableSerial.timeSerial,BeginTime,EndTime from (--作用:获取两个时间之内的所有日期--表别名:TableSerial--字段名:timeSerial,weekNameselect    dateadd(dd,number,@S_BeginTime) as timeSerial,datename(weekday,dateadd(dd,number,@S_BeginTime) )  weekNamefrom  master..spt_valueswhere  type='p'and    dateadd(dd,number,@S_BeginTime)<[email protected]_EndTime)  TableSerial join--作用:统计某科室周一 到 周日 ,每日设置预约人数上限--shift 预约设置主表;ID:主键,deptID科室ID--(这2个字段这里暂时没用:BeginTime:起效时间--EndTime终止时间)--shiftDetail 预约设置明细  shiftID:主表对应ID;menCount:每个时段预约人数上限 ;weekID(1..7)--(这里暂时没用:PeriodID 分时段ID)--weekList 星期列表;weekID(1..7) weekName(星期一..星期日)--表别名:TempA,TempB--参数:@ShiftID(select weekName,sumCount,deptID,BeginTime,EndTime from weekList,(select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTimefrom shift s,shiftDetail sd  where  [email protected] and sd.shiftID = s.id                                   --and s.deptID = @DeptID  group by weekID,s.deptID,BeginTime,EndTime) TempAwhere weekList.weekID = TempA.weekID ) TempBon TempB.weekName = TableSerial.weekName  and  timeSerial>=BeginTime and timeSerial<=EndTime  --必须有记录的有效期) ShiftSetleft join(--作用:统计某日、某门诊的已经预约人数。  --AppointList 是预约病人流水表。 deptID:预约门诊,appointTime:预约时间。--参数:@DeptIDselect count(*) actualCount,deptID, appointTime from AppointListwhere deptID = @DeptID                     --这里应该加个时间范围!!!!@group by  appointTime,deptID)Appon    App.appointTime=ShiftSet.timeSerial  --App.deptID=ShiftSet.deptID  andorder by timeSerial













------解决方案--------------------
恭喜楼主啊

顺带学习学习,学习这个也能算工作经验么?
------解决方案--------------------
  相关解决方案