gpt4 book ai didi

sql - T-SQL 在给定日期范围内的同一天查找来自同一客户的多个订单

转载 作者:行者123 更新时间:2023-12-02 01:04:26 25 4
gpt4 key购买 nike

我正在尝试为需要查看客户是否已取消并重新提交订单的工作准备一份报告。没有任何方法可以链接这两个订单,我所要做的就是 customer_id、order_date 和状态。我需要找到特定日期范围内的所有客户,并且在同一天有超过一个客户的订单记录,返回 customer_id 就足够了

order_id    customer_id         order_date              status
1 1234 30/12/2013 09:10:55 CANCELLED
2 2222 30/12/2013 09:17:12 APPROVED
3 4321 30/12/2013 10:04:10 APPROVED
4 1234 30/12/2013 10:22:01 APPROVED

在上面的示例数据中,它会找到订单 1 和 4 并返回 customer_id 1234。状态是什么并不重要,因为我可以从报告中选择它们。

我做了一些挖掘并想出了这样的东西:

SELECT customer_id,
(SELECT COUNT(*) AS count
FROM orders AS o2
WHERE (order_date = o1.order_date)) AS counter
FROM orders AS o1
WHERE (order_date BETWEEN '2013-12-01' AND '2014-01-01')
GROUP BY customer_id, order_date
HAVING (counter >= 2)

但是我在尝试运行它时遇到了一个错误,所以我显然在某处遇到了一些错误。

如有任何帮助,我们将不胜感激。

最佳答案

子查询有点偏离,但您可以完全跳过子查询,只需按 customer_idorder_date 的日期部分进行分组并计算每个结果即可一天;

SELECT DISTINCT customer_id
FROM orders
WHERE order_date >= '2013-12-01' AND order_date < '2014-01-02'
GROUP BY customer_id, CAST(order_date AS DATE)
HAVING COUNT(*) >= 2

An SQLfiddle to test with .

请注意,由于您的日期附加了任意时间,如果不在 where 子句中也转换为 DATE,则无法轻松使用 BETWEEN。直接比较日期更容易(上限小于前一天的所有时间)

关于sql - T-SQL 在给定日期范围内的同一天查找来自同一客户的多个订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24187458/

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