SELECT
SUM(
CASE
WHEN cumulative = 1
THEN percent
ELSE 0
END)
FROM phppos_items_taxes;
这是否做到以下几点:Mysql的SUM有鉴于上述声明case语句
mysql> select * FROM phppos_items_taxes;
+---------+-----------+---------+------------+
| item_id | name | percent | cumulative |
+---------+-----------+---------+------------+
| 1 | Tax 1 | 8.00 | 0 |
| 1 | Tax 2 | 10.00 | 1 |
| 3 | Sales Tax | 8.00 | 0 |
| 4 | Tax 1 | 20.00 | 0 |
| 4 | Tax 2 | 20.00 | 0 |
+---------+-----------+---------+------------+
这是否综上所述%的每一行累计= 1,如果累积= 1,则0相加! 。
短,是的,但IF()语法不是ANSI SQL。使用CASE增加了移植的可能性,因为这是值得的。 –
+1。我也使用这种语法与MySQL,但AFAIK“sum(case when ...)”是一个更标准的解决方案编辑当我结束我的帖子,我已经看到比尔的答案:) –
@ Bill:是的,你说得对。我完全同意你的看法。但是,MySQL中有很多不是ANSI SQL的东西,它们不会为默认情况下为可移植的MySQL编写SQL代码。有机会,当可移植性来质疑所有的查询将被检查,但它是伟大的,你提出了,谢谢。 :) – Shef