02/10/2018, 00:21

[SQLSERVER] Hướng dẫn xuất kho và trừ tồn realtime sử dụng cú pháp sum over( by partition)

Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn tạo phiếu xuất kho canh theo hàng tồn giảm dần sử dụng cú pháp sum over by partition để tính lại hàng tồn trong sqlserver. Nghiệp vụ xuất kho, là nghiệp vụ thường được sử dụng trong các ...

Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn tạo phiếu xuất kho canh theo hàng tồn giảm dần sử dụng cú pháp sum over by partition để tính lại hàng tồn trong sqlserver.

Nghiệp vụ xuất kho, là nghiệp vụ thường được sử dụng trong các phần mềm quản lý.

Thường thì khi chúng ta xuất kho thì phải kiểm tra trong kho có còn hàng tồn để xuất hay không? và phải làm sao để trừ tồn giảm dần

Mình ví dụ: 

- Kho hàng của điện máy xanh TPHCM: đang còn tồn 2000 cái nồi cơm điện trong kho điện máy.

- Chi nhánh Tân Bình gởi yêu cầu xuất kho là 500 chiếc.

- Chi nhánh Phú Nhuận gởi yêu cầu xuất kho là 800 chiếc.

và Chi nhánh Bình Thạnh gởi yêu cầu xuất kho là 1000 chiếc.

Vậy thì các bạn nhìn thấy: thì kho sẽ không đủ số lượng tồn để xuất cho chi nhánh Bình Thạnh, vì khi xuất cho hai chi nhánh Tân Bình và Phú Nhuận hết tất cả 1300 chiếc, thì kho chỉ còn tồn lại 700 chiếc.

Không còn đủ 1000 chiếc để xuất cho chi nhánh Bình Thạnh.

Vậy yêu cầu đặt ra là mình thực hiện câu lệnh sql sau cho nó xử lý xuất được:

+ Tân Bình 500 chiếc.

+ Phú Nhuận 800 chiếc.

và Bình Thạnh còn lại là 700 chiếc.

xuất kho hàng tồn sqlserver

Ví dụ: Trong dữ liệu mình có bảng tbl_test với dữ liệu như sau:

xuất kho theo số tồn sqlserver

Các bạn theo dõi ở mavt: 003, thì các bạn sẽ thấy số lượng cần xuất là 900, nhưng số lượng tồn chỉ có 500.

Vậy bây giờ các bạn thực hiện câu truy vấn sau:

SELECT   id,
		mavt,		
        soluongton, 
        soluong, 		        
		iif(soluongton - SUM(soluong) OVER (PARTITION BY mavt ORDER BY id)>0, soluong, soluong + ( soluongton - SUM(soluong) OVER (PARTITION BY mavt ORDER BY id))) AS slxuat,
		soluongton - SUM(soluong) OVER (PARTITION BY mavt ORDER BY id) AS sltonconlai
	

FROM tbl_test

Kết quả:

xuất kho sqlserver

Nhìn kết quả các bạn sẽ thấy: 

Ở dòng id 6: nó sẽ xuât đủ 100 và nó còn tồn là 400.

- id 7 yêu cầu xuất 500, nhưng kho chỉ còn 400 nên nó chỉ xuất 400.

Hy vọng với bài toán trên sẽ giúp được các bạn phần nào về xử lý cách xuất kho theo hàng tồn.

Nếu các bạn có giải pháp nào hay hơn, có thể góp ý cho chúng mình thêm tại trang hỏi đáp: http://hoidap.laptrinhvb.net

HAVE FUN heart

Tags: sumpartition sql
0