如果列为空,请选择另一个

时间:2014-12-19 02:30:52

标签: oracle select

我的表格产品有attr:Id, discount_pct, price, number_of_sold

discount_pct可以是null

如果discount_pct * price * number_of_sold不为NULL,我正在尝试将select查询与discount_pct求和,否则,求和price * number_of_sold

1 个答案:

答案 0 :(得分:2)

这听起来像你想要的

SUM( coalesce( (1 - discount_pct/100) * price, price ) * number_of_sold )

假设discount_pct是0到100之间的值(即20表示20%的折扣)。如果(1 - discount_pct/100) * price为非NULL,discount_pct将计算折扣价,如果discount_pct为NULL,则计算空值。 coalesce返回列表中的第一个非NULL值。因此,如果可以计算,则完整表达式返回折扣价,如果不能乘以销售数,则返回价格。