Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL:ADD &MINUS dựa trên loại trường

Bạn có thể sử dụng một biến để giữ số tiền tích lũy:

SELECT ID, 
       @s := IF(ACTION_TYPE='ADD', @s + ACTION_QTY, @s - ACTION_QTY) AS BALANCE,
       ACTION_QTY,
       ACTION_TYPE
FROM tableA
CROSS JOIN (SELECT @s := 0) AS var
ORDER BY ID 

Truy vấn trên giả định rằng chỉ có hai loại ACTION_TYPE các giá trị, cụ thể là 'ADD''DEDUCT' . Do đó, nếu ACTION_TYPE không bằng 'ADD' , thì nó bằng 'DEDUCT' .

Demo tại đây




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Woocommerce nhận Mã sản phẩm bằng SKU sản phẩm

  2. MySQL Multiple Subqueries so với toàn bộ các truy vấn

  3. Cập nhật cơ sở dữ liệu Dot Net Entity Framework không tạo bảng trong cơ sở dữ liệu mysql

  4. Nâng cao thủ tục được lưu trữ không tương thích với sql_mode =only_full_group_by mặc dù sql_mode đang trống

  5. Khi nào thì một bảng chuyển từ MyISAM sang InnoDb?