如何用SQL循环查询语句

如何用SQL循环查询语句,第1张

最好的方法是使用存储过程,然后使用一个临时表,把每次选择的数据保存到临时表中。

临时表可以在存储过程中使用 creat table #表名(字段 字段类型) 来创建,这样的表只在当前存在,相当于放到了内存里,你也可以实际的建一个表,然后把查出的结果都保存进去。以后选择都从这个表里查。

大概意思就是这样

declare @tmp=304

creat table #临时表(学校名称 varchar(200),学校代码 varchar(200),人数 int,总成绩 varchar(30))

while @tmp<600

begin

declare @tmpb=@tmp+1

declare @zcj=@tmp+'-'+@tmpb

insert into #临时表 select 学校代码,学校名称,count() as 人数,@zcj as 总成绩 from cjd where 总成绩>=@tmp and 总成绩<@tmpb group by 学校代码,学校名称

@tmp=@tmp+1

end

select from #临时表

go

大概的意思就是这样,如果你创建好了本地实际的表,那就省掉创建表,然后把数据插到创建好的表中即可,而且这样方便你以后做各种查询,所以推荐你还是创建一个这样的表比较好。

MSSQL 数据库下实现:

CREATE TABLE #TEMP (单号 INT, 价格 FLOAT)

INSERT INTO #TEMP VALUES(2,50)

INSERT INTO #TEMP VALUES(1,50)

INSERT INTO #TEMP VALUES(3,60)

INSERT INTO #TEMP VALUES(4,60)

INSERT INTO #TEMP VALUES(7,60)

INSERT INTO #TEMP VALUES(8,60)

DECLARE   @REFID        INT

        , @ORDERID        VARCHAR(30)

        , @JIAGE VARCHAR(100)

SELECT  REFID = IDENTITY(INT , 1, 1), DealFlg = 0, 单号,价格

INTO #Temp_Lists

FROM #TEMP

SELECT @REFID = MIN(REFID) FROM #Temp_Lists WHERE DealFlg = 0

CREATE TABLE #TEMP1 (单号 VARCHAR(100), 价格 FLOAT)

DECLARE @TEMPDANHAO VARCHAR

WHILE @REFID IS NOT NULL

BEGIN

   SELECT @ORDERID = 单号,@JIAGE = 价格 FROM  #Temp_Lists WHERE REFID = @REFID

   IF EXISTS(SELECT 价格 FROM #TEMP1 WHERE 价格 = @JIAGE)

   BEGIN

    SELECT @TEMPDANHAO = 单号 FROM #TEMP  WHERE 单号 = @ORDERID

    PRINT @ORDERID

    UPDATE #TEMP1 SET 单号 = convert(varchar(10),单号)+ ',' + @TEMPDANHAO WHERE 价格 = @JIAGE

   END

   ELSE

   BEGIN

     INSERT INTO #TEMP1 SELECT  FROM #TEMP  WHERE 单号 = @ORDERID

   END

    

    UPDATE #Temp_Lists SET DealFlg = 1 WHERE REFID = @REFID

    SELECT @REFID = MIN(REFID) FROM #Temp_Lists WHERE DealFlg = 0 AND REFID > @REFID

END

SELECT  FROM #TEMP1

DROP TABLE #TEMP1

DROP TABLE #Temp_Lists

DROP TABLE #TEMP

Create Table A

(

Aa int

)

insert into A values(2)

Declare @cnt int

Set @cnt=10;

/

要重复显示的次数

Sql 2005以上版本

/

with t(Aa,Cnt)

As

(

Select Aa,1 As Cnt From A

Union All

Select Aa,cnt+1 As Cnt From t Where cnt<@cnt

)

Select Aa From t

Drop Table A

那直接用int统计不就完了一个库存数量表:字段1编号 字段2 数量 字段3 剩余 字段4时间第二个表发货表:字段1编号 字段2 发货数量 字段3发货时间第3个表收货表:字段1编号 字段2收货数量 字段3收获时间这样你就可以实现按日期查询收货时间和数量,按日期查询发货数量 按日期查询当前货物库存数量和剩余数量按日期查询收货时间和数量需要的话联系我给我详细信息库我给你做好调试好网页形的直接用就行了免费的哦呵呵。Q787642701

首先你写的语法就是错误的 子查询中不可以有 ORDER BY

第二 我觉得用游标写比较好

第三 查看所以有ID的表和列语句是这样写的

Select tabname,colname FROM SysObjects as tab,syscolumns as col

Where XType='U'

and tabid = colobject_id

and colname = 'ID'

use master

go

if exists (select  from sysobjects where xtype = 'U' and name = 'satsun')

drop table satsun

go

create table SatSun([id] int identity(1,1),[date] datetime,[weekday] char(6))

go

declare @datetime datetime,@weekday char(6)

set @datetime='2014-1-1'  ---你所要查询时间段的开始时间,为2014年第一天

while @datetime<='2014-12-31'   ---你所要查询时间段的结束时间,为2014年的最后一天

begin

select @weekday=datename(weekday,@datetime)

if @weekday in('星期六','星期日') ---只插入周六周日数据

insert SatSun([date],[weekday]) values(convert(varchar(10),@datetime,110),@weekday)

select @datetime=dateadd(day,1,@datetime)

end

go

select id as 序号, convert(varchar(10),date,120) as 日期, weekday as 周末 from satsun  --查询出的结果即为该年所有周六周日时间

以上就是关于如何用SQL循环查询语句全部的内容,包括:如何用SQL循环查询语句、sql 循环查询、sql server 循环查询数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9505985.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存