ai giúp mình code lại sql này thành access với
li_95 > 24-04-16, 05:59 PM
Declare @I int, @N int,@DiemSang int,@ChiTieu int, @DiemXetTuyen Decimal(5,2),@MaNganh varchar(10),@TrungTuyen int
Declare @Thoat int,@Vong int
Update DanhSach set TrungTuyen=0 --Làm lại từ đầu
Update NganhXetTuyen set DiemXetTuyen=0, SoLuong=0, TrungTuyen=0
Set @Vong=0
Set @Thoat=0
Declare @TS table (ID int identity(1,1), MaNganh varchar(10), SoBaoDanh varchar(10),TongDiem Decimal(5,2),NguyenVong int)
Declare @IDMin int, @IDMax int,@SoBaoDanh varchar(10),@NguyenVong int,@SoLuong int, @ThayDoi int,@TrungTuyenOld int
while @Thoat=0 --Làm mãi cho đến khi hoàn thành
begin
Set @ThayDoi=0 --Không có thay đổi nào xảy ra
Set @Vong=@Vong+1
Select @I=Min(TT),@N=Max(TT) From NganhXetTuyen
while @I<=@N
begin
Select @DiemXetTuyen=0, @SoLuong=0, @TrungTuyen=0
Select @MaNganh=MaNganh, @DiemSang=DiemSang,@ChiTieu=ChiTieu
From NganhXetTuyen where TT=@I
--Xác định điểm xét tuyển theo Chỉ tiêu ngành
Select @DiemXetTuyen=TongDiem From
(Select row_number() over(order by TongDiem desc,NguyenVong,SoBaoDanh) as TT,TongDiem
From DanhSach
where MaNganh=@MaNganh and TongDiem>=@DiemSang and TrungTuyen>-2) A
where TT=@ChiTieu
if isnull(@DiemXetTuyen,0)<@DiemSang --Xác định điểm xét tuyển >=Điểm sàng
Set @DiemXetTuyen=@DiemSang
Delete @TS --Xóa sạch danh sách
Insert into @TS(MaNganh,SoBaoDanh,TongDiem,NguyenVong)
Select MaNganh,SoBaoDanh,TongDiem,NguyenVong
From DanhSach
where MaNganh=@MaNganh and TongDiem>=@DiemXetTuyen and TrungTuyen>-2 and isnull(@ChiTieu,0)>0
Select @TrungTuyenOld=Count(*) From DanhSach --TrungTuyenOld trong danh sách mới @TS
where MaNganh=@MaNganh and TrungTuyen=1
and SoBaoDanh in (Select SoBaoDanh From @TS)
Select @TrungTuyen=count(*) From @TS
if isnull(@TrungTuyen,0)<>isnull(@TrungTuyenOld,0) --Có thay đổi
Set @ThayDoi=@ThayDoi+1
Select @SoLuong=count(*) From DanhSach where MaNganh=@MaNganh
--Hiện ra để theo dõi
Select @ThayDoi as ThayDoi,@Vong as Vong, @I as I, * ,
@DiemXetTuyen as DiemXT, @SoLuong as SL, @TrungTuyen as TrungTuyen,@ChiTieu as ChiTieu
From @TS
Update NganhXetTuyen set DiemXetTuyen=@DiemXetTuyen, SoLuong=@SoLuong, TrungTuyen=@TrungTuyen
where TT=@I
Update DanhSach Set TrungTuyen=1 From @TS A
where DanhSach.MaNganh=A.MaNganh and DanhSach.SoBaoDanh=A.SoBaoDanh and DanhSach.NguyenVong=A.NguyenVong
Update DanhSach Set TrungTuyen=-1 --Những thí sinh khác không trúng tuyển
where DanhSach.MaNganh=@MaNganh and TrungTuyen=0
and SoBaoDanh not in (Select SoBaoDanh From @TS)
Update DanhSach Set TrungTuyen=-2 From @TS A --Hủy các nguyện vọng khác vì thí sinh đã trúng tuyển
where DanhSach.MaNganh<>A.MaNganh and DanhSach.SoBaoDanh=A.SoBaoDanh
and DanhSach.NguyenVong>A.NguyenVong
Set @I=@I+1
end --While
if @ThayDoi=0 --Không có thay đổi nào xảy ra
Set @Thoat=1
end