是否可以对考虑第二列内容的列进行求和?
我想要的是第二个陈述:
SELECT * FROM theTable;
+------------+-------------+
| type | value |
+------------+-------------+
| plusitive | 11 |
+------------+-------------+
| negative | 7 |
+------------+-------------+
| negative | 3 |
+------------+-------------+
SELECT SUM_BASED_ON_WHETHER_type_IS_plusitive_OR_negative(value) FROM theTable;
+----------------------------------------------------------------+
| SUM_BASED_ON_WHETHER_type_IS_plusitive_OR_negative(value) |
+----------------------------------------------------------------+
| 1 |
+----------------------------------------------------------------+
所以字符串'plusitive'表示乘以1的值,'negative'表示在加到sum之前乘以-1的乘法值。
任何人都知道该怎么做?我知道表格布局不是最佳的任务,但改变它不是一个选项。 解决方案将在存储过程中实现。
答案 0 :(得分:5)
您可以在聚合函数中使用CASE
表达式来确定值是正数还是负数:
select
sum(case `type`
when 'plusitive' then value
when 'negative' then value * -1 end) Total
from theTable;
答案 1 :(得分:0)
你也可以使用它:
SELECT
COALESCE( ( SELECT SUM(`value`)
FROM theTable
WHERE `type` = 'plusitive'
)
, 0)
-
COALESCE( ( SELECT SUM(`value`)
FROM theTable
WHERE `type` = 'negative'
)
, 0)
AS Total ;