当前位置: 代码迷 >> Sql Server >> 请教WITH AS 有关问题
  详细解决方案

请教WITH AS 有关问题

热度:5   发布时间:2016-04-24 18:35:00.0
请问WITH AS 问题
请问我在游标里,怎么使用WITH AS ?如下:



declare curSchClass cursor 
for select schName,StartTime,EndTime from d_EmployeeScheduling 
where UserID=@UserID 
open curSchClass
fetch next from curSchClass into  
@schName,@StartTime,@EndTime
while @@FETCH_STATUS = 0
begin

;
WITH dt AS (
 SELECT *,ROW_NUMBER()OVER(PARTITION BY [EnterOrOut] ORDER BY [date] )id
FROM d_Att
WHERE  
convert(varchar(5),date,108) between convert(varchar(5),@CheckInTime1,108) and convert(varchar(5),@CheckOutTime2,108)
and convert(varchar(10),date,121) between convert(varchar(10),@sttime,121) and convert(varchar(10),@edtime,121)
)
......................................................
end 


------解决方案--------------------
你的代码里是用了with dt as了,不过后面你的用select * from dt 就行了
------解决方案--------------------
大概的格式:
declare curSchClass cursor 
for select schName,StartTime,EndTime from d_EmployeeScheduling 
where UserID=@UserID 

open curSchClass

fetch next from curSchClass into  
@schName,@StartTime,@EndTime

while @@FETCH_STATUS = 0
begin

;WITH dt AS (
SELECT *,ROW_NUMBER()OVER(PARTITION BY [EnterOrOut] ORDER BY [date] )id
FROM d_Att
WHERE  
convert(varchar(5),date,108) between convert(varchar(5),@CheckInTime1,108) and convert(varchar(5),@CheckOutTime2,108)
and convert(varchar(10),date,121) between convert(varchar(10),@sttime,121) and convert(varchar(10),@edtime,121)
)
select *
from dt

--继续取下一条数据
fetch next from curSchClass into  
@schName,@StartTime,@EndTime

end 

------解决方案--------------------
不能执行是报错还是没数据?
------解决方案--------------------
引用:
我提供的代码里是用WITH AS了,可是不能执行.所以问为什么不能呢?
因为我里面有根据游标来判断并进行提取另一个表的数据的复杂代码.


具体的代码呢
------解决方案--------------------

------解决方案--------------------
我这么多年开发经历里面就没用过一次游标用于实际情景,练手的时候用过一下而已
  相关解决方案