You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询订单状态为'Awaiting return'的客户及最近订单距今天数

解决方案

先修正你SQL里的关联错误——原语句里o.Oid应该是o.CID,因为Orders表是通过CID和Customers关联的。然后用以下逻辑完成天数计算:

完整SQL示例(以MySQL为例)

SELECT
    c.CID,
    c.Name,
    o.orderStatus,
    DATEDIFF(CURRENT_DATE, GREATEST(o.OrderDate, o.ReOrderDate)) AS days_since_last_order
FROM
    Customers c
INNER JOIN 
    Orders o ON c.CID = o.CID
WHERE
    o.orderStatus = 'Awaiting return'

核心逻辑拆解

  1. 取最新订单日期:用GREATEST()函数直接对比OrderDate和ReOrderDate,返回两者里更新的那个,不用写复杂的CASE判断。
  2. 计算天数差:不同数据库的日期差函数不一样,对应写法如下:
    • SQL Server:DATEDIFF(day, GREATEST(o.OrderDate, o.ReOrderDate), GETDATE())
    • PostgreSQL:CURRENT_DATE - GREATEST(o.OrderDate, o.ReOrderDate) AS days_since_last_order
    • Oracle:TRUNC(SYSDATE) - TRUNC(GREATEST(o.OrderDate, o.ReOrderDate))
  3. 处理NULL值:如果ReOrderDate可能为空,要加COALESCE兜底,改成GREATEST(o.OrderDate, COALESCE(o.ReOrderDate, o.OrderDate)),避免函数报错。

另外,因为你只需要订单状态为'Awaiting return'的记录,用INNER JOIN比LEFT JOIN更合适,不会查出没有对应订单的客户数据。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 03:23:10