最好的方法是使用存储过程,然后使用一个临时表,把每次选择的数据保存到临时表中。
临时表可以在存储过程中使用 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 循环查询数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)