如何解决使用多个 AND 创建 SQL 语句
我在创建正确的 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
我想显示所有符合以下条件的项目:
我希望 item1 会被显示。
到目前为止我的代码是:
SELECT item,warehouse,amount
FROM XXXX
WHERE
(warehouse = B AND amount>0)
AND
(warehouse = A AND amount<2)
我知道仓库 = B AND 仓库 = 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;
请注意,这不会返回金额。如果您也想要这样,请使用条件聚合来透视数据:
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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。