SqlServer 2022通过临时表和游标遍历方式逻辑处理获取目标数据
-- 创建局部临时表
if object_id('tempdb..#myTempTable') is not null begin
drop table #myTempTable
end
/*else begin
create table #myTempTable(
工作中心 varchar(50),
序号 int
)
end*/
-- 临时表不存在情况下
select * into #myTempTable from(
select '1001' 工作中心,1 序号 union all
select '1002' 工作中心,2 序号 union all
select '001' 工作中心,3 序号 union all
select '1004' 工作中心,4 序号 union all
select '1008' 工作中心,5 序号 union all
select '001' 工作中心,6 序号 union all
select '001' 工作中心,7 序号 union all
select '001' 工作中心,8 序号 union all
select '1009' 工作中心,9 序号
) a
-- select * from #myTempTable
-- 定义变狼
declare @工作中心 varchar(50)
declare @序号 int
declare @前一个工作中心 varchar(50)
declare @前一个序号 int
set @前一个工作中心='#'
-- 定义游标
declare cursorName cursor for
select 工作中心,序号 from #myTempTable
-- 打开游标
open cursorName
-- 遍历游标
fetch next from cursorName into @工作中心,@序号;
while @@fetch_status=0 begin
-- print(@工作中心)
if @前一个工作中心='#' begin
set @前一个工作中心=@工作中心
set @前一个序号=@序号
end
else begin
if @工作中心='001' begin
if @前一个工作中心!='001' begin
-- 输出001上的一条记录
print(@前一个工作中心+','+convert(varchar(50),@前一个序号))
end
end
else begin
if @前一个工作中心!=@工作中心 and @前一个工作中心='001' begin
-- 输出001最后一条
print(@前一个工作中心+','+convert(varchar(50),@前一个序号))
end
end
set @前一个工作中心=@工作中心
set @前一个序号=@序号
end
-- 遍历下一条,一定要加上这句,否则会一直循环
fetch next from cursorName into @工作中心,@序号;
end
-- 关闭和销毁游标
close cursorName
deallocate cursorName
- .NET Core系列之MemoryCache 初识
- 007手机一键Root(安机网一键Root) v3.0 官方最新版 一键ROOT您的Android手机
- 12306密码被盗了怎么办?12306密码外泄解决方法
- 12个字的qq网名
- 150M迷你型无线路由器怎么设置?
- 192.168.1.1打不开怎么办?路由器192.168.1.1打不开的原因以及解决办法
- 2011年电子报合订本 电子报 编辑部 中文 PDF版 [84M]
- 2015年1月15日小米新旗舰发布会现场图文直播
- 2016.3.1vivo Xplay5新品发布会现场视频直播 优酷直播
- 2016华为P9发布会视频直播地址 4月15日华为P9国行发布会直播