【问题标题】:SQL Trailing Date CountSQL 尾随日期计数
【发布时间】:2021-06-28 14:46:27
【问题描述】:

我需要根据客户下订单的跟踪日期进行计算。 获取下表的SQL代码:

select Date,Cust, ProdID, OrderLog 
from AUDIT AS A 
where Date >= '2021-02-07' 
  and Cust = '477' 
  and Prod ID = 'X' 
order by A.Date desc
Date Cust ProdID OrderLog
2/18/2021 477 X Null
2/17/2021 477 X 1
2/16/2021 477 X 1
2/15/2021 477 X 1
2/14/2021 477 X Null
2/13/2021 477 X Null

我想要做的是计算从第一个 OrderLog 日期 2/15/2021 到最后一个 OrderLog 日期 2/17/2021 的天数。结果为 3。

我尝试在窗口函数中使用滞后/过度/分区来执行此操作,但没有成功。我也尝试过没有运气的解决方案。

需要在一个包含多个 Cust、PRODID 和 Dates 的查询中执行此操作。计数需要在 Cust 和 ProdID 级别。

感谢您的帮助!

【问题讨论】:

    标签: sql date time


    【解决方案1】:

    我想你想要:

    select Cust, ProdID,
           max(date) - max(case when OrderLog = 1 then date end) as diff
    from AUDIT AS A
    where Date >= '2021-02-07' and
          Cust = '477' and Prod ID = 'X'
    group by cust, prodid;
    

    请注意,日期/时间函数因数据库而异,因此您的数据库可能会使用 - 以外的值来减去两个日期。

    【讨论】:

    • 这几乎就是我想要的。我修改了您提供的示例以获得我想要的输出。但是,如何将日期添加到上次记录时间的行中? SQL 代码:select Cust, prodid, DateDiff(day, max(case when WillCall = 1 then date end), min(case when WillCall = 1 then date end)) AS Diff from AUDIT where date >= '2021-02-07 ' and Cust = '477' and prodid = 'X' group by Cust, prodid;
    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    相关资源
    最近更新 更多