Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何计算_Sql - Fatal编程技术网

Sql 如何计算

Sql 如何计算,sql,Sql,我有一张这样的桌子: Item Qty Price A Price B abc 5 36.00 0 qwe 8 0 48.00 zxc 6 12.00 0 poi 4 10.00 0 lkj 9 12.00 0

我有一张这样的桌子:

Item     Qty    Price A         Price B
abc       5      36.00                0
qwe       8          0            48.00
zxc       6      12.00                0
poi       4      10.00                0
lkj       9      12.00                0
mnb       3          0            14.00     
vfr       7          0             6.00
如何使用SQL ie对值求和。如果价格A为零,它将选择价格B。预期结果如下:-

Item       Value
abc        180.00
qwe        384.00
zxc         72.00
poi         40.00
lkj         36.00
mnb         42.00
vfr         42.00 

为什么不做类似的事情呢

SELECT SUM(Price A) FROM table; SELECT SUM(Price B) FROM table WHERE Price A = 0;

然后将结果加在一起…

从上面的示例中,您可以选择priceA+priceB,因为其中一个始终为零,否则。。。我不太确定这是否可以在纯SQL中实现…

如果A和B可以为非零,则使用以下公式,并且仅在出现这种情况时使用价格A:

SELECT Item, CASE WHEN `Price A` != 0 THEN `Price A` * Qty
                  ELSE `Price B` * Qty
             END AS Value
FROM table;

假设两者都不能为null:


从tableName中选择项目,数量*如果(PriceA!=0,PriceA,PriceB)作为值;

请编辑并使用“代码格式”功能/按钮,使示例数据可读。lkj 9 x 12=108而不是36?那么如果两个值都不为零会发生什么?如果价格A和B都不为零会发生什么?聪明:-)值得明确说明基本假设,即其中一个价格(应该)始终为0。正确,在示例(需求)中,它们始终为0,将是A或B,但不是A&B,即A&B为非零或A&B有值。当A&B都有值时会发生什么?+1这总是给出预期结果(即使两个价格都非零)。
SELECT Item, CASE WHEN `Price A` != 0 THEN `Price A` * Qty
                  ELSE `Price B` * Qty
             END AS Value
FROM table;