Computer >> Máy Tính >  >> Lập trình >> MySQL

Thực hiện SUM và SUBTRACTION trên cơ sở một điều kiện trong một truy vấn MySQL?

Đối với điều này, hãy sử dụng câu lệnh CASE và đặt cho cả SUM và SUBTRACTION. Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable866(
   Status varchar(100),
   Amount int
);
Query OK, 0 rows affected (0.63 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable866 values('ACTIVE',50);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable866 values('INACTIVE',70);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable866 values('INACTIVE',20);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable866 values('ACTIVE',100);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable866 values('ACTIVE',200);
Query OK, 1 row affected (0.11 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select *from DemoTable866;

Điều này sẽ tạo ra kết quả sau -

+----------+--------+
| Status   | Amount |
+----------+--------+
| ACTIVE   | 50     |
| INACTIVE | 70     |
| INACTIVE | 20     |
| ACTIVE   | 100    |
| ACTIVE   | 200    |
+----------+--------+
5 rows in set (0.00 sec)

Sau đây là truy vấn để thực hiện SUM hoặc SUBTRACTION trong cùng một cột với một truy vấn MySQL duy nhất -

mysql> select sum(CASE WHEN Status = 'ACTIVE' then Amount
   WHEN Status = 'INACTIVE' then -Amount
   END) AS RemainingAmount
   from DemoTable866;

Điều này sẽ tạo ra kết quả sau -

+-----------------+
| RemainingAmount |
+-----------------+
| 260             |
+-----------------+
1 row in set (0.06 sec)