declare updateEMTinCa_rcursor cursor scroll --声明一个游标
for
SELECT EMTinCar.ID AS EMTinCar_ID,
CASE WHEN b.YieldTransitStateType_ID IS null THEN 3 ELSE b.YieldTransitStateType_ID
END as VehicleStateType_ID from EMTinCar
left JOIN (
SELECT YieldTransit.EMTinCar_ID ,YieldTransit.YieldTransitStateType_ID,
CASE WHEN YieldTransit.YieldTransitStateType_ID=20 THEN 1 ELSE 2
END as VehicleStateType_ID from YieldTransit
inner JOIN (
SELECT max(ID) AS ID,EMTinCar_ID from YieldTransit group BY EMTinCar_ID
) a ON a.ID=YieldTransit.ID) b ON EMTinCar_ID=EMTinCar.ID
OPEN updateEMTinCa_rcursor --打开游标
--声明要提取数据的变量
declare @YieldTransitStateType_ID int ,@VehicleStateType_ID int,@EMTinCar_ID int
--定位游标到哪一行
fetch First from updateEMTinCa_rcursor into @EMTinCar_ID,@VehicleStateType_ID --into的变量数量必须与游标查询结果集的列数相同
WHILE @@fetch_status=0 --提取成功,进行下一条数据的提取操作
begin
Update EMTinCar Set VehicleStateType_ID=@VehicleStateType_ID Where ID= @EMTinCar_ID --修改当前行
fetch next from updateEMTinCa_rcursor into @EMTinCar_ID,@VehicleStateType_ID --移动游标
end
CLOSE updateEMTinCa_rcursor
DEALLOCATE updateEMTinCa_rcursor