你好,
我的表格与上图一样,我想对所有行的数量求和,但我需要排除同一行中 AISLE = POS 且 QTY < 0 的行。
我做了一些尝试来得到我想要的,但我找不到解决方案:
SELECT
ROUND(SUM(QTY),
2) AS INVENTORY
FROM
INV_QTY_LOCATION
WHERE
PRODUCT = 143459 AND AISLE != 'PHY' AND AISLE != 'RET' AND case when AISLE = 'POS' AND QTY > 0
再试一次
SELECT
ROUND(SUM(QTY),
2) AS INVENTORY
FROM
INV_QTY_LOCATION
WHERE
PRODUCT = 143459 AND AISLE != 'PHY' AND AISLE != 'RET' AND (AISLE = 'POS' AND QTY > 0)
在此特定情况下,结果应为 161。
解决方案
SELECT
ROUND(
SUM(
CASE WHEN(AISLE = 'POS' AND QTY > 0) OR AISLE != 'POS' THEN QTY ELSE 0
END
),
2
) AS INVENTORY
FROM
INV_QTY_LOCATION
WHERE
PRODUCT = 143459 AND AISLE != 'PHY' AND AISLE != 'RET'
最佳答案
我想指出 NOT IN
将有助于此查询:
WHERE PRODUCT = 143459 AND
AISLE NOT IN ('PHY', 'RET') AND
(AISLE <> 'POS' OR QTY > 0)
注意:这假设 AISLE
永远不会是 NULL
。
或者,或者:
WHERE PRODUCT = 143459 AND
AISLE NOT IN ('PHY', 'RET') AND
NOT (AISLE = 'POS' AND QTY > 0)
关于MySQL - 使用分组条件查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36754667/