我有一个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';
答案 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';