用户sql列a如果b为0,则使用b

时间:2017-10-23 15:46:13

标签: php mysql sql

我有一个SQL查询,它选择产品价格和数量的总和。如果成本价格不为零,我想用成本价来总结它。 我的SQL查询是这样的:

SELECT SUM(price*quantity) as sum FROM `table` WHERE invoice = '1';

同一张表有(id,price,cost_price,quantity),目的是使用cost_price,如果不是零则使用价格。

所以如果我正在寻找这样的查询:

SELECT SUM( ((cost_price == 0) ? price : cost_price) *quantity) as sum FROM `table` WHERE invoice = '1';

5 个答案:

答案 0 :(得分:1)

您也可以这样做...(SQL Server)

SELECT SUM(COALESCE(NULLIF(cost_price,0),price) * quantity) AS sum 
FROM [table]

答案 1 :(得分:0)

您想要的是条件聚合

SUM( (CASE WHEN cost_price = 0 THEN price ELSE cost_price END) * quantity) as sum

答案 2 :(得分:0)

只需对下面的逻辑使用case表达式。以下语法适用于大多数DBMS

SELECT SUM((case cost_price when 0 then price else cost_price end) * quantity)) as sum 
FROM `table` 
WHERE invoice = '1';

答案 3 :(得分:0)

您可以在MySQL中使用if(根据您使用反引号转义标识符的方式,这是rdbms):

SELECT SUM(if(cost_price = 0, price, cost_price) * quantity) as sum
FROM `table` 
WHERE invoice = '1';

答案 4 :(得分:0)

如果您使用的是Sql Server,则可以使用IIF

SELECT SUM(IIF(cost_price=0,price,cost_price) * quantity) AS SUM
FROM `table` 
WERE invoice = '1';