--清空临时库,需要里面的结构
delete from testno_temp--删除临时库
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[zkzh_temp]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[zkzh_temp] 
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[grade_temp]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[grade_temp] --将某年级的考生全部装入,kldm代表文科理科
select schoolno, kldm ,grade ,bz into grade_temp from info_base WHERE GRADE='2004'--联结成绩库
select a.schoolno ,a.kldm into zkzh_temp from grade_temp a  Left join MC b on a.schoolno=b.schoolno and b.testdate='20060101' AND a.grade='2004" order by .kldm,b.total --去掉学号为NULL的考生!!!!!!!!!问题出在这里!在insert过程中,原有的顺序乱了!
insert into a.schoolno,a.kldm testno_temp select from  zkzh_temp a where a.schoolno is not NULL 

declare @ks int
declare @zw int
declare @kl varchar(10)
select top 1 @kl=kldm from testno_temp
set @ks=1
set @zw=0update testno_temp
set @ks=case when @kl=kldm then
          case when @zw>=30 then @ks+1
          else @ks
          end
        else @ks+1
        end,
    @zw=case when @kl=kldm then
          case when @zw>=30 then 1
          else @zw+1
          end
        else 1
        end,
    testno=right('0'+cast(@ks as varchar(3)),2)+right('0'+cast(@zw as varchar(3)),2),
    @kl=kldm,
    testroom=right('0'+cast(@ks as varchar(3)),2),
    sitterno=right('0'+cast(@zw as varchar(3)),2)
GO
编出的文科考场和理科考场乱成一团!
写得也太复杂,很笨