gpt4 book ai didi

mysql - 仅返回最大值小于指定值的行

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

嗨,这是一个非常棘手的问题(对我来说)。我有三个表。

一个包含手机号码和唯一 ID (tbldealermobiles)

FCS - Mobile number
1234 - 07464648787
1234 - 07565465465
3566 - 07878989989
7899 - 07464646466
7899 - 07565465464
9654 - 07589898998

一个包含购买日期和唯一 ID 以及其他详细信息 (tblhistory)

FCS - purchase date - purchased
1234 - 22/04/2013 - gloves
1234 - 14/03/2013 - hat
1234 - 01/03/2013 - coat
3566 - 20/04/2013 - gloves
3566 - 19/04/2012 - hat
7899 - 14/03/2013 - shoes
9654 - 24/05/2013 - hat
9654 - 19/04/2013 - shoes

一个包含客户类型和唯一 ID 以及其他详细信息。 (tblAllDealers)

FCS - Cust type - name
1234 - Virtual - Jim
3566 - Outbound - Jon
7899 - Virtual - Jack
9654 - Outbound - Susan

当我想显示购买超过 30 天(如果是“出境”)和超过 60 天(如果是虚拟)的客户时,我的问题就来了。

我只想返回 Jon 和 Jack 的所有手机号码,因为其他人从为其客户类型指定的日期开始购买。

我正在使用 INNER JOIN 链接唯一 ID (FCS) 上的 3 个表,我正在使用 MAX 仅返回 MAX 值小于日期的值,但我不知道如何添加条件来指定两个不同的日期。

这是我目前的查询 -

SELECT *
FROM tbldealermobiles
INNER JOIN tblhistory ON tbldealermobiles.FCS = tblhistory.FCS
INNER JOIN tblAllDealers ON tbldealermobiles.FCS = tblAllDealers.FCS
WHERE (tblAllDealers.CustGroup = 'Virtual' AND
tblhistory.PurchaseDate < date('2013-03-22'))
OR
(tblAllDealers.CustGroup = 'Outbound' AND
tblhistory.PurchaseDate < date('2013-04-21'))
GROUP BY tbldealermobiles.mobilenumber
HAVING MAX(tblhistory.PurchaseDate) < date('2013-04-21')
ORDER BY tblhistory.PurchaseDate DESC

问题是 FCS 的购买日期可能总是早于指定的日期,但我只想返回在指定日期之后没有购买日期的手机号码,具体取决于客户群。

预先感谢您的帮助。

编辑:感谢 Dukeling 格式化我的代码。

最佳答案

您想将连接中的条件提取到 having 子句中。联接查看这些日期之前的记录,因此您不知道之后是否发生任何事情。

SELECT *
FROM tbldealermobiles
INNER JOIN tblhistory ON tbldealermobiles.FCS = tblhistory.FCS
INNER JOIN tblAllDealers ON tbldealermobiles.FCS = tblAllDealers.FCS
WHERE tblAllDealers.CustGroup in ('Virtual', 'Outbound')
GROUP BY tbldealermobiles.mobilenumber
HAVING MAX(tblhistory.PurchaseDate) <
MAX(case when tblAllDealers.CustGroup = 'Virtual' then date('2013-03-22')
when tblAllDealers.CustGroup = 'Outbound' then date('2013-04-21')
end)
ORDER BY tblhistory.PurchaseDate DESC

关于mysql - 仅返回最大值小于指定值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671565/

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