我需要小于0且大于0的值的总和

toiithl6  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(386)

我的代码是这样的:

SELECT p.productid AS 'Redni broj',
    p.code AS 'Sifra robe',
    p.unitname AS 'Jedinica mere',
    di.quantity AS 'Kolicina',
    di.price 'Stara cena',
    di.itemvalue 'Stari iznos',
    di.price2 AS 'Nova cena',
    (di.price2 * di.quantity) AS 'Novi iznos',
    (di.price2 * di.quantity - di.itemvalue) AS 'Difference',
    SUM(di.price2 * di.quantity - di.itemvalue > 0) AS 'Positive difference',
    SUM(di.price2 * di.quantity - di.itemvalue < 0) AS 'Negative Difference'
FROM product AS p
LEFT JOIN productcategorypr AS pc ON p.productid = pc.productid
LEFT JOIN documentitem AS di ON p.productid = di.productid
GROUP BY p.productid

我需要过滤差异到2列,所有差异低于0,所有差异高于0,差异是新的价格-旧的价格。。。

rwqw0loc

rwqw0loc1#

求和(如果(di.price2di.quantity-di.itemvalue)>0,则(di.price2di.quantity-di.itemvalue)否则0结束)为“正差”
求和(如果(di.price2di.quantity-di.itemvalue)<0,则(di.price2di.quantity-di.itemvalue)否则0结束)为“负差”

z6psavjg

z6psavjg2#

此表达式不正确:

SUM(di.price2 * di.quantity - di.itemvalue > 0) AS 'Positive difference'

你需要用一个 CASE 表达式:

SUM(CASE WHEN di.price2 * di.quantity > di.itemvalue THEN di.price2 * di.quantity - di.itemvalue ELSE 0 END) AS 'Positive difference'

对…做同样的事 Negative difference 表达式:

SUM(CASE WHEN di.price2 * di.quantity < di.itemvalue THEN di.price2 * di.quantity - di.itemvalue ELSE 0 END) AS 'Negative Difference'

相关问题