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

Đề tài: Câu lệnh SQL tính tồn kho theo ngày tháng ?

  1. #1
    Ngày gia nhập
    06 2013
    Bài viết
    10

    Mặc định Câu lệnh SQL tính tồn kho theo ngày tháng ?

    Mình đang tín tồn đầu kì, tổng nhập, tổng xuất theo ngày tháng đầu kì và theo ngày tháng cuối kì. Mình đã thiết kế 2 view tính NgayNhap và NgayXuat như sau

    View NgayNhap:



    View NgayXuat



    Câu SQL tính tồn đầu, tổng nhập, tồn cuối của mình như sau:

    SQL Code:
    1. (SELECT     dbo.NgayNhap.ProductID, dbo.NgayNhap.ProductName, SUM(ISNULL(dbo.NgayNhap.Quantity, 0)) AS TONDAU, 0 AS TNHAP, 0 AS TXUAT
    2. FROM         dbo.NgayNhap
    3. WHERE     (CONVERT(VARCHAR, dbo.NgayNhap.OrderDate, 20) < CONVERT(DATETIME, '2013-06-01', 111))
    4. GROUP BY dbo.NgayNhap.ProductID, dbo.NgayNhap.ProductName)
    5. UNION
    6. (SELECT     dbo.NgayNhap.ProductID, dbo.NgayNhap.ProductName,0 AS TONDAU, SUM(ISNULL(dbo.NgayNhap.Quantity, 0)) AS TNHAP, 0 AS TXUAT
    7. FROM         dbo.NgayNhap
    8. WHERE     (CONVERT(VARCHAR, dbo.NgayNhap.OrderDate, 20)  >= CONVERT(DATETIME, '2013-06-01', 111)) AND (CONVERT(VARCHAR, dbo.NgayNhap.OrderDate, 20) <= CONVERT(DATETIME, '2013-06-30', 111))  
    9. GROUP BY dbo.NgayNhap.ProductID, dbo.NgayNhap.ProductName)
    10. UNION
    11. (
    12. SELECT     dbo.NgayXuat.ProductID, dbo.NgayXuat.ProductName,0 AS TONDAU, 0 AS TNHAP, SUM(ISNULL(dbo.NgayXuat.Quantity, 0)) AS TXUAT
    13. FROM         dbo.NgayXuat
    14. WHERE     (CONVERT(VARCHAR, dbo.NgayXuat.OrderDate, 20)  > CONVERT(DATETIME, '2013-06-30', 111))  
    15. GROUP BY dbo.NgayXuat.ProductID, dbo.NgayXuat.ProductName


    Kết quả câu lệnh như sau:



    Vấn đề của mình là: các sản phẩm vừa có thự hiện nhập và xuất, hoặc có tồn đầu lớn > 0 và có thự hiện giao dịch nhập hoặc tồn thì nó tách ra 2 mẫu tin. Ví dụ như sản phẩm HP Probook tồn đầu là 40 và tổng nhập là 50 thì nó tách thành 2 mầu tin. Mình muốn tồn đầu và tổng nhập và tổng xuất cùng 1 mẫu tin thì phải làm sao
    Attached Thumbnails Attached Thumbnails ngay_nhap.jpg   ngay_xuat.jpg   ketquaSQL.jpg  

  2. #2
    Ngày gia nhập
    06 2007
    Bài viết
    206

    Nếu theo cách của bận, và ra kết quả như trên thi bạn thêm hàm sum(tondau), sum(tongnhap), sum(tongxuat) rồi group by productid, productname.

    Không biết mình có hiểu sai gì cách tính của bạn không.
    Theo mình khi xem tồn kho: Hàng hóa - Tồn đầu (đầu kỳ) - Nhập - Xuất - Tồn cuối
    Ví dụ bạn muốn xem trong khoảng thời gian từ T1 đến T2, thìL

    - Đầu kỳ = Tổng nhập trước T1 - Tổng xuất trước T1
    - Tồn cuối = Đầu kỳ + Tổng nhập - Tổng xuất
    Thà để chửi dốt 1 lần, còn hơn ngu cả đời.

  3. #3
    Ngày gia nhập
    06 2013
    Bài viết
    10

    Trích dẫn Nguyên bản được gửi bởi nth4 Xem bài viết
    Không biết mình có hiểu sai gì cách tính của bạn không.
    Theo mình khi xem tồn kho: Hàng hóa - Tồn đầu (đầu kỳ) - Nhập - Xuất - Tồn cuối
    Ví dụ bạn muốn xem trong khoảng thời gian từ T1 đến T2, thìL

    - Đầu kỳ = Tổng nhập trước T1 - Tổng xuất trước T1
    - Tồn cuối = Đầu kỳ + Tổng nhập - Tổng xuất
    Bạn ko hiểu sai do cách tính mình sai bỏ qua Tổng xuất trước T1.

  4. #4
    Ngày gia nhập
    05 2013
    Bài viết
    79

    Mình là người có kinh nghiệm trong việc xử lý dữ liệu.
    Thường các bạn hay viết câu lệnh thống kê ngay tại Sql, nhưng điều này là không nên
    Tốt nhất các bạn nên như thế này:
    DataBase chỉ là nơi lưu trữ dữ liệu, hãy lấy dữ liệu thô về client để code ví dụ như c# để xử lý. Xử lý xong lại có thể cập nhật vào trong Db.

    Vì sao lại thế. Vì thường tính toán trong database bằng T-SQL, function, bảng tạm sẽ làm cho Db phải làm việc rất nhiều. Nếu số lượng bản ghi lớn sẽ mất nhiều thời gian và tốn tài nguyên.

    .........
    Mạng xã hội chia sẻ kiến thức tin học và lập trình http://linkit.vn
    Nhận: Hỗ trợ việc học, làm đồ án C#, ASP.NET, Làm phần mềm và website. Email: funvl.net@gmail.com
    Đảm bảo uy tín, chất lượng, Code đẹp, tối ưu, có nhiều điểm khác biệt. Giá cả phải chăng.

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

    Mặc định Giúp mình với bạn ơi

    Trích dẫn Nguyên bản được gửi bởi nuoiheo0001 Xem bài viết
    Bạn ko hiểu sai do cách tính mình sai bỏ qua Tổng xuất trước T1.
    Bạn có thể cho mình code của bài này khi bạn tính tổng xuất trước T1 với. Thank bạn nhiều

  6. #6
    Ngày gia nhập
    07 2017
    Nơi ở
    Q9.TP Hồ Chí Minh
    Bài viết
    2

    Post anh ơi có thể cho em cái funcition hay proc tính ton dau ki dc ko anh ..!!!!

    em muốn tính tồn kho mà làm hoài không đc ..anh có thể giúp đc ko ạ ??
    Attached Thumbnails Attached Thumbnails Capture.PNG  

  7. #7
    Ngày gia nhập
    03 2011
    Bài viết
    467

    Trích dẫn Nguyên bản được gửi bởi nuoiheo0001 Xem bài viết
    Mình đang tín tồn đầu kì, tổng nhập, tổng xuất theo ngày tháng đầu kì và theo ngày tháng cuối kì. Mình đã thiết kế 2 view tính NgayNhap và NgayXuat như sau

    View NgayNhap:



    View NgayXuat



    Câu SQL tính tồn đầu, tổng nhập, tồn cuối của mình như sau:

    SQL Code:
    1. (SELECT     dbo.NgayNhap.ProductID, dbo.NgayNhap.ProductName, SUM(ISNULL(dbo.NgayNhap.Quantity, 0)) AS TONDAU, 0 AS TNHAP, 0 AS TXUAT
    2. FROM         dbo.NgayNhap
    3. WHERE     (CONVERT(VARCHAR, dbo.NgayNhap.OrderDate, 20) < CONVERT(DATETIME, '2013-06-01', 111))
    4. GROUP BY dbo.NgayNhap.ProductID, dbo.NgayNhap.ProductName)
    5. UNION
    6. (SELECT     dbo.NgayNhap.ProductID, dbo.NgayNhap.ProductName,0 AS TONDAU, SUM(ISNULL(dbo.NgayNhap.Quantity, 0)) AS TNHAP, 0 AS TXUAT
    7. FROM         dbo.NgayNhap
    8. WHERE     (CONVERT(VARCHAR, dbo.NgayNhap.OrderDate, 20)  >= CONVERT(DATETIME, '2013-06-01', 111)) AND (CONVERT(VARCHAR, dbo.NgayNhap.OrderDate, 20) <= CONVERT(DATETIME, '2013-06-30', 111))  
    9. GROUP BY dbo.NgayNhap.ProductID, dbo.NgayNhap.ProductName)
    10. UNION
    11. (
    12. SELECT     dbo.NgayXuat.ProductID, dbo.NgayXuat.ProductName,0 AS TONDAU, 0 AS TNHAP, SUM(ISNULL(dbo.NgayXuat.Quantity, 0)) AS TXUAT
    13. FROM         dbo.NgayXuat
    14. WHERE     (CONVERT(VARCHAR, dbo.NgayXuat.OrderDate, 20)  > CONVERT(DATETIME, '2013-06-30', 111))  
    15. GROUP BY dbo.NgayXuat.ProductID, dbo.NgayXuat.ProductName


    Kết quả câu lệnh như sau:



    Vấn đề của mình là: các sản phẩm vừa có thự hiện nhập và xuất, hoặc có tồn đầu lớn > 0 và có thự hiện giao dịch nhập hoặc tồn thì nó tách ra 2 mẫu tin. Ví dụ như sản phẩm HP Probook tồn đầu là 40 và tổng nhập là 50 thì nó tách thành 2 mầu tin. Mình muốn tồn đầu và tổng nhập và tổng xuất cùng 1 mẫu tin thì phải làm sao

    Tao them mot bang goi la chot ton` di. neu khong cai báo cáo này của bạn sẽ càng ngày chạy càng chậm

    - - - Nội dung đã được cập nhật ngày 09-09-2018 lúc 05:32 PM - - -

    Trích dẫn Nguyên bản được gửi bởi KingLove Xem bài viết
    em muốn tính tồn kho mà làm hoài không đc ..anh có thể giúp đc ko ạ ??
    Vướng chỗ nào? bạn cứ nói chung chung vậy ai biết chỗ nào mà gỡ?
    bongda24h.tv

Các đề tài tương tự

  1. Tạo report báo cáo theo tuần, theo tháng như thế nào???
    Gửi bởi giadinhvnvn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 06-03-2013, 02:37 PM
  2. Làm field theo kiểu theo kiểu trộn văn bản trong templateword
    Gửi bởi bimtocsieuquay trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 26-09-2012, 10:39 AM
  3. Lý thuyết giải thuật Các cách biểu diễn cây nhị phân theo theo phương pháp giản đồ và dấu ngoặc lồng nhau?
    Gửi bởi hoangminh29491 trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 0
    Bài viết cuối: 05-06-2012, 05:04 PM
  4. Sắp xếp tăng dần theo dường theo dường chéo phụ của ma trận như thế nào các bạn.
    Gửi bởi phanvanngoc trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 04-05-2011, 11:08 AM
  5. đọc file excel theo tên cột hoặc các cột ko theo thứ tự ???
    Gửi bởi xinbat007 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 14-05-2010, 10:09 AM

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