gpt4 book ai didi

mysql - SQL 查询将判断订单上的任何部件是否缺货

转载 作者:行者123 更新时间:2023-11-29 18:35:53 24 4
gpt4 key购买 nike

我真的不知道如何表达这个问题,所以我很难找到解决方案。我有一个查询,可以提取某一天的所有订单。我需要知道哪些订单上有库存=“N”的商品。我不是在寻找它来查找所有商品均为库存=“N”的订单。如果至少有其中一个,我希望在单独的一栏中写“Y”。

select 
a.OrderNum,
c.Inventory,
case when c.inventory = 'n' then 'Y' else 'N' end as NonStock
from orders a inner join orditems b on a.ordnum = b.ordnum inner join items
c on b.code = c.code
where a.OrderDate = '7/24/2017'
group by a.OrderNum, c.Inventory

这是我想出的原始代码。我知道这是不正确的。我需要类似的东西(或完全不同的东西,我真的不知道),只要订单中的任何商品有 c.inventory = 'N',NonStock 列就会显示 Y。我的方向完全正确吗?任何指导将不胜感激。

示例数据:

a.OrderNum  b.ItemNum  c.Inventory
123 3 Y
123 4 N
123 5 Y
124 6 Y
124 9 N
124 8 Y
125 11 Y
125 13 Y
125 15 Y

期望的输出:

a.OrderNum NonStock
123 Y
124 Y
125 N

由于订单 123 和 124 上有一个项目 c.inventory = 'N',因此它们在所需输出上被触发为非库存。订单 125 有 3 件商品,全部为 c.inventory = 'Y',因此对于 NonStock,它将获得 'N'。

最佳答案

这看起来是正确的,您需要使用 CASE 表达式来实现此目的,但根本不需要使用 group by。我的意思是 group by a.OrderNum, c.Inventory 行。您的查询应该是

select OrderNum, max(NonStock) as NonStock
from (
select
a.OrderNum,
c.Inventory,
case when c.inventory = 'n' then 'Y' else 'N' end as NonStock
from orders a inner join orditems b on a.ordnum = b.ordnum inner join items
c on b.code = c.code
where a.OrderDate = '7/24/2017' ) xxx
group by OrderNum;

关于mysql - SQL 查询将判断订单上的任何部件是否缺货,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45303508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com