Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] ai giúp mình code lại sql này thành access với
#1
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=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=-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
Chữ ký của li_95 li_95,gia nhập Thủ Thuật Access từ 24-04 -16.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] Lỗi "A problem occurred while Microsoft Access was communicating with the OLE server thanhoai 1 107 03-11-16, 03:53 PM
Bài mới nhất: maidinhdan
  [Hỏi] Việc set thuộc tính OnClick trong Code toancvp 5 229 31-10-16, 10:14 AM
Bài mới nhất: toancvp
  [Lỗi] Cúp điện ---> lỗi access 2013 biencuong86 3 149 26-10-16, 04:30 PM
Bài mới nhất: maidinhdan
  [Lỗi] Không chạy được VBA Code hungthanmx 3 217 04-09-16, 03:48 PM
Bài mới nhất: Nguyen Hoang Diep
  thay đổi biểu tượng Access dưới thanh Start từ win 7 đến win 10 thanhtruong 7 432 05-08-16, 10:53 PM
Bài mới nhất: hungefi

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ