【问题标题】:I need SUM of values that are below 0 and greater than 0我需要小于 0 且大于 0 的值的总和
【发布时间】:2018-06-19 17:07:33
【问题描述】:

这就是我的代码的样子:

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

我需要将 Diffrence 过滤为 2 列,所有低于 0 的差异,以及所有高于 0 的差异,差异是 NewPrice - Old Price...

【问题讨论】:

  • mysql 和 SQL server 不同。选择一个

标签: mysql sql sql-server tsql


【解决方案1】:

这个表达式不正确:

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'

【讨论】:

    【解决方案2】:

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

    SUM( CASE WHEN (di.price2 * di.quantity - di.itemvalue)

    【讨论】:

      猜你喜欢
      • 2018-12-18
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      相关资源
      最近更新 更多