Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Cách lập một query tính lũy kế

  1. #1
    Ngày gia nhập
    11 2014
    Bài viết
    2

    Mặc định Cách lập một query tính lũy kế

    Chào các bạn, mình đang làm báo cáo thống kê bằng access nhưng có một vấn đề mình làm mãi mà không được, Có ai biết thì hướng dẫn giúp cách tính lũy kế bằng query. Ai có mẫu cho mình tham khảo. Thank’s
    VD:
    Ngày nhập ------- MaSP ---------- TenSP---------------- Khoiluong--------------Luyke
    24/11/2014 ------ 001 ------------ Voi -------------------35000
    24/11/2014 ------ 002 ------------Luu huynh------------12000
    24/11/2014 ------ 003 ------------Muoi ------------------5000
    24/11/2014 ------ 004 ------------Duong ----------------80000

    25/11/2014 ------ 001 ------------ Voi -------------------25000 --------------60000
    25/11/2014 ------ 002 ------------Luu huynh------------10000----------------22000
    25/11/2014 ------ 003 ------------Muoi ------------------4000 ---------------9000
    25/11/2014 ------ 004 ------------Duong ----------------70000----------------150000

    26/11/2014 ------ 001 ------------ Voi -------------------22000 --------------82000
    26/11/2014 ------ 002 ------------Luu huynh------------11000----------------33000
    26/11/2014 ------ 003 ------------Muoi ------------------3000 ---------------12000
    26/11/2014 ------ 004 ------------Duong ----------------85000----------------235000

    - - - Nội dung đã được cập nhật ngày 25-11-2014 lúc 01:33 PM - - -

    Sao không có ai hướng dẫn giùm mình vậy nhi?

  2. #2
    Ngày gia nhập
    08 2011
    Bài viết
    70

    Mình chỉ có SQL thôi bạn, bạn tham khảo thử.
    Mình áp dụng cách thức tương tự của bài toán tính giá điện bậc thang của một tác giả nào đó mình cũng không nhớ rõ nữa.
    Code:
    IF OBJECT_ID('tempdb..#tmpLuyKe') IS NOT NULL
        DROP TABLE #tmpLuyKe
    Set dateformat dmy
    
    Declare @tmp table (Ngay smalldatetime, MaSP varchar(10), TenSP varchar(100), KhoiLuong decimal, LuyKe decimal)
    Insert @tmp Select '24/11/2014','001','Voi','35000','0'
    Insert @tmp Select '24/11/2014','002','LuuHuynh','12000','0'
    Insert @tmp Select '24/11/2014','003','Muoi','5000','0'
    
    Insert @tmp Select '25/11/2014','001','Voi','25000','0'
    Insert @tmp Select '25/11/2014','002','LuuHuynh','10000','0'
    Insert @tmp Select '25/11/2014','003','Muoi','4000','0'
    
    Insert @tmp Select '26/11/2014','001','Voi','22000','0'
    Insert @tmp Select '26/11/2014','002','LuuHuynh','11000','0'
    Insert @tmp Select '26/11/2014','003','Muoi','3000','0'
    
    select  t2.Ngay, t2.MaSP, t2.TenSP, t2.KhoiLuong , t1.KhoiLuong [OldLuong], t2.LuyKe
    Into #tmpLuyKe
    from @tmp t1 left join @tmp t2 on datediff(d, t1.Ngay, t2.Ngay)=1
    Where t1.MaSP=T2.MaSP
    
    Insert #tmpLuyKe (Ngay, MaSP, TenSP)
    Select Min(Ngay), MaSP, TenSP
    From @tmp
    Group by MaSP, TenSP
    
    Update #tmpLuyKe
    Set KhoiLuong=tmp.KhoiLuong, OldLuong=0
    From #tmpLuyKe lk join @tmp tmp on lk.MaSP=tmp.MaSP and lk.Ngay=tmp.Ngay
    Where lk.Ngay in (select Min (Ngay) From @tmp)
    
    Update #tmpLuyKe
    Set LuyKe=KhoiLuong+OldLuong
    
    Select * from #tmpLuyKe order by Ngay, MaSP
    Lương Tấn Thi
    Phone: 094.394.1568
    Mail: luongtanthi@gmail.com
    Skype: luongtanthi
    Facebook: https://www.facebook.com/luongtanthi

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn