2011-12-20 118 views
1

我有一个很长的sql查询,可以计算一些关于付款和发货的事情。在某些情况下,该值null.我认为这是因为有一个由0如果选择的值为空,mysql显示0?

被划分这里是我的查询的一小部分:

 ROUND(sum(case when shipping_method = 'c' AND (paid_amount - shipping_costs) < 70 then 1 end) * 100/sum(case when shipping_method = 'c' then 1 end),2) as co_less_70, 

我认为,当这部分是0:sum(case when shipping_method = 'colissimo' then 1 end),2)我的查询显示空。有没有什么办法为co_less_70列指定一个默认值?

+2

你有没有试过'IFNULL'? – Jomoos 2011-12-20 11:37:23

回答

1

您可以设置默认情况下,但任何东西,除了零: -

sum(case when shipping_method = 'colissimo' then 1 else some_value end case),2) 
+0

用户希望在整个列为NULL时为其分配默认值,而不是除数为0时的默认值。 – 2011-12-20 11:37:46

+0

如果没有行shipping_method ='c',那么你会得到0/0,这可能是什么原因造成的问题。这不会解决它 - 任何其他的价值都会抛开数学。 – cHao 2011-12-20 11:39:27

3
IFNULL(
    ROUND(sum(case when shipping_method = 'c' AND (paid_amount - shipping_costs) < 70 then 1 end) * 100/sum(case when shipping_method = 'c' then 1 end),2) 
,<default>) AS co_less_70,