编写SQL语句在scm_statement_account_detail表计算sys_no=‘MAT-2405160018’数据的amount字段,所有bill_type=‘1’的数据之和减去bill_type=‘2’的数据之和减去bill_type=‘8’的数据之和加上bill_type=‘9’的数据之和
SELECT
SUM(CASE WHEN bill_type = '1' THEN amount ELSE 0 END) -
SUM(CASE WHEN bill_type = '2' THEN amount ELSE 0 END) -
SUM(CASE WHEN bill_type = '3' THEN amount ELSE 0 END) -
SUM(CASE WHEN bill_type = '8' THEN amount ELSE 0 END) +
SUM(CASE WHEN bill_type = '9' THEN amount ELSE 0 END)
FROM
scm_statement_account_detail
WHERE
sys_no = 'MAT-2405160021';
解析:
- 使用`SUM`函数来计算每个`bill_type`条件下的`amount`字段之和。
- 使用`CASE`语句来判断`bill_type`的值,如果是`'1'`、`'2'`、`'8'`或`'9'`,则将相应的`amount`加入总和中;如果不是,则将结果设为`0`。
- 在最后的SELECT语句中,将这四个条件的结果依次相加减,得到最终的数值。