SQL用循环查询的结果 建临时表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL用循环查询的结果 建临时表相关的知识,希望对你有一定的参考价值。

sql存储过程中建临时表crerte table #temp( a.b.c.d. )
插入数据 a=12 b=13 c=14 d=15
那个 12.13 14 15 都是从 select count(* ) from 表 where 字段= i 得到
i从1到4 做循环

insert into #temp
select sum(case when 字段=1 then 1 else 0),
sum(case when 字段=2 then 1 else 0),
sum(case when 字段=3 then 1 else 0),
sum(case when 字段=4 then 1 else 0)
from 表

确定的循环次数,而且只有4次,不用循环都可以了追问

问题我简化了。循环会有N次。每10次结果组成一条记录插入临时表。

追答

那你还是循环吧,
declare @fint int
set @fint=0

insert into #temp
select sum(case when 字段=@fint+1 then 1 else 0),
sum(case when 字段=@fint+2 then 1 else 0),
sum(case when 字段=@fint+3 then 1 else 0),
sum(case when 字段=@fint+4 then 1 else 0)--一直加到10
from 表

set @fint=@fint+10

参考技术A declare @fint int
set @fint=1
declare @fsum int
set @fsum=4
while @fint<=@fsum
begin
--自行添加需要语句
set @fint=@fint+1
end追问

谢谢。不过我是想知道,当循环查询( select count(* ) from 表 where 字段=@ i )的结果是 临时表的数据项时候(table[i][J])怎么插入数据

追答

没明白你问什么

追问

插入数据 会是一条记录的形式插入。现在这一条记录 需要做N次循环查询才能得到。所以怎么插入数据??对照原始问题看下哈

追答

declare @fstrtemp char(100)
declare @fstr char(1000)
declare @fint int
set @fint=1
declare @fsum int
set @fsum=4
while @fint<=@fsum
begin
set @fstrtemp=(select rtrim(@fstrtemp)+(select rtrim(cast(count(* ) as char(10)))
from 表 where 字段=@fint)+',')
set @fint=@fint+1
end
set @fstr=(select 'insert into tablename select '+left(rtrim(@fstrtemp),len(rtrim(@fstrtemp))-1))
exec(@fstr)
--类似这种,可以把这些全部写入@fstr,然后执行,相当于拼sql就可以了

本回答被提问者采纳

SQL查询遍历数据方法一 [ 临时表 + While循环]

以下以SQL Server 2000中的NorthWind数据库中的Customers表为例,

用 临时表 + While循环 的方法, 对Customers表中的CompanyName列进行遍历

create table #temp
(
  id int identity(1,1),
  customer nvarchar(50)
)


declare @customer nvarchar(50)
declare @n        int
declare @rows     int

select @n=1

insert #temp(customer) select distinct companyname from customers

select @rows = @@rowcount

while @n <= @rows
begin


select @customer = companyname 
from customers
     where companyname=(select customer from #temp where id = @n)
order by companyname desc

print(@customer)

select @n = @n + 1

end


运行后, 输出结果如下:


(所影响的行数为 91 行)

Alfreds Futterkiste
Ana Trujillo Emparedados y helados
Antonio Moreno Taquería
Around the Horn
Berglunds snabbk?p
Blauer See Delikatessen
Blondesddsl père et fils
Bólido Comidas preparadas
Bon app‘
Bottom-Dollar Markets
B‘s Beverages
Cactus Comidas para llevar
Centro comercial Moctezuma
Chop-suey Chinese
Comércio Mineiro
Consolidated Holdings
Die Wandernde Kuh
Drachenblut Delikatessen
Du monde entier
Eastern Connection
Ernst Handel
Familia Arquibaldo
FISSA Fabrica Inter. Salchichas S.A.
Folies gourmandes
Folk och f? HB
France restauration
Franchi S.p.A.
Frankenversand
Furia Bacalhau e Frutos do Mar
Galería del gastrónomo
Godos Cocina Típica
Gourmet Lanchonetes
Great Lakes Food Market
GROSELLA-Restaurante
...... (以下略) ..................................

















































以上是关于SQL用循环查询的结果 建临时表的主要内容,如果未能解决你的问题,请参考以下文章

sql中怎样将查询出来的结果创建成临时表

MySQL 存储过程,获取使用游标查询的结果集

oracle存储过程 中把临时表数据 返回结果集

sqlserver怎么建临时表

C#操作sql查询出的临时表,详细如下:

SQL查询遍历数据方法一 [ 临时表 + While循环]