使用多个 AND 创建 SQL 语句

Create SQL statement with mulitple AND

我在创建正确的 SQL 请求时遇到问题。 这是我的 table:

item    warehouse   amount
item1   A   1
item1   B   5
item2   A   9
item2   B   2
item3   A   1
item3   A   0
item4   B   1

我想显示所有项目:

  1. -在A库数量少于2
  2. -在仓库 B 中的数量大于 0 同时

我希望显示 item1。

到目前为止我的代码是:

SELECT item, warehouse  , amount

FROM XXXX

WHERE 
(warehouse  = B AND amount>0)
AND 
(warehouse  = A AND amount<2)

我知道 warehouse = B AND warehouse = A 永远不会发生,但我不知道从这里去哪里。

我是 SQL 的新手,但我觉得我需要使用 GRUPBY

有什么帮助吗?

您可以使用聚合。使用 where 得到 任一个 条件。然后检查是否满足两者。假设每个仓库每个项目一行,你可以使用:

SELECT item
FROM XXXX
WHERE (warehouse = 'B' AND amount > 0) OR
      (warehouse = 'A' AND amount < 2)
GROUP BY item
HAVING COUNT(*) = 2;

请注意,这不是 return 金额。如果你也想要,那么使用条件聚合来旋转数据:

SELECT item,
       SUM(CASE WHEN warehouse = 'B' THEN amount END) as b_amount,
       SUM(CASE WHEN warehouse = 'A' THEN amount END) as a_amount
FROM XXXX
WHERE (warehouse = 'B' AND amount > 0) OR
      (warehouse = 'A' AND amount < 2)
GROUP BY item
HAVING COUNT(*) = 2;