【问题标题】:Create SQL statement with mulitple AND创建具有多个 AND 的 SQL 语句
【发布时间】:2021-04-14 14:40:18
【问题描述】:

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

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)

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

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

有什么帮助吗?

【问题讨论】:

  • 我认为您希望您的 WHERE 子句在两组标准之间为 OR。所以 WHERE (warehouse = B AND amount>0) OR (warehouse = A AND amount

标签: sql group-by where-clause


【解决方案1】:

您可以使用聚合。使用where 获取任一 条件。然后检查是否满足两者。假设每个仓库每件商品有一行,您可以使用:

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

请注意,这不会返回金额。如果你也想这样,那么使用条件聚合对数据进行透视:

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;

【讨论】:

  • 非常感谢,我还有很多东西要学,幸运的是我的 Gordon Linoff 这次能帮我一把!
猜你喜欢
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-18
  • 2017-10-31
相关资源
最近更新 更多