gpt4 book ai didi

mysql - 如果列不为 0,则 SQL 查询每个订单仅返回 1 条记录

转载 作者:可可西里 更新时间:2023-11-01 08:04:25 25 4
gpt4 key购买 nike

我已经使用这个网站好几个月了,它对我很有帮助。然而,我终于遇到了一个问题,我一直无法找到如何做的答案。

我的表中大约有 30 列,但我只对其中的 7 列感兴趣。我试图完成的是一个查询,它将返回每个订单的第一个和最后一个选择的日期/时间,但仅针对已完成的订单。

我的 table 看起来像这样:

    ordnum | adddte          |pckdte            |pckqty |appqty | srcloc | ctnnum
-----------+-----------------+------------------+-------+-------+--------+------
ORD123 | 4/20/16 6:31 AM | Null | 1 | 0 | 375 | CTN1
ORD123 | 4/20/16 6:31 AM | 4/20/16 11:39 AM | 2 | 2 | 335 | NULL
ORD123 | 4/20/16 6:31 AM | 4/20/16 11:37 AM | 1 | 1 | 336 | CTN1

ORD456 | 4/20/16 7:11 AM | 4/20/16 11:59 AM | 3 | 3 | 376 | CTN2
ORD456 | 4/20/16 7:11 AM | 4/20/16 11:47 AM | 1 | 1 | 345 | CTN2
ORD456 | 4/20/16 7:11 AM | 4/20/16 11:07 AM | 4 | 4 | 355 | CTN2

请注意,判断订单是否完成的唯一方法是它的每个 appqty 的值都大于 0。它的 pckdte 可以为 null,并且订单仍在完成。

下面是我目前使用的代码,它确实给出了每个订单的开始和停止时间,但也包括尚未完成的订单。

SELECT 
ordnum
,max(pckdte) AS "Last Pick"
,min(pckdte) AS "First Pick"
FROM MyTable
Where (adddte >= '2016-04-02 00:00:00' AND pckdte <= '2016-04-20 23:59:59')

and ctnnum like 'c%'
and (srcloc like '2%' or srcloc like '3%' or srcloc like '4%' or srcloc like '5%' or srcloc like '1%')
group by ordnum
order by ordnum

代码给出了这些结果:

    ordnum  | Last Pick        |   First Pick
------------+------------------+----------------
ORD123 | 4/20/16 11:39 AM | 4/20/16 11:37 AM
ORD456 | 4/20/16 11:59 AM | 4/20/16 11:07 AM

但是我不想包括 ORD123,因为还有一个未完成的选择 (appqty = 0)。 adddte、srcloc 和 ctnnum 列用于将我部门的订单与其他人的订单分开,因为它们都存储在同一个表中,我的 where 语句中概述的参数是过滤掉我部门工作的唯一方法。

如果您对此问题有任何帮助,我们将不胜感激。如果我需要提供其他信息,请告诉我。

最佳答案

添加一行以确保 ordnum 的 appqty = 0 不存在

SELECT 
ordnum
,max(pckdte) AS "Last Pick"
,min(pckdte) AS "First Pick"
FROM MyTable
Where (adddte >= '2016-04-02 00:00:00' AND pckdte <= '2016-04-20 23:59:59')
and ctnnum like 'c%'
and (srcloc like '2%' or srcloc like '3%' or srcloc like '4%' or srcloc like '5%' or srcloc like '1%')
-- line below added
AND NOT EXISTS (SELECT 1 FROM MyTable T2 WHERE appqty = 0 AND T2.ordnum = MyTable.ordnum)
group by ordnum
order by ordnum

关于mysql - 如果列不为 0,则 SQL 查询每个订单仅返回 1 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36751500/

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