【发布时间】:2021-10-18 20:24:36
【问题描述】:
我正在解决一个问题,以确定在特定时间之间创建和发送了多少产品。例如,我需要查看今天下午 6 点到明天下午 3 点之间创建了多少(创建的意思是使用 X 数量创建了多少订单)。我正在尝试为此创建一个时间箱,但无论我尝试什么都行不通。
select CREATE_DATE
, CREATE_TIME
, RELEASED_DATE
, RELEASED_TIME
, sum(case
when CREATE_DATE = DATEADD(DAY, DATEDIFF(DAY, 0, CREATE_DATE), 0)
and CREATE_TIME >= '18:00:00' AND CREATE_DATE = DATEADD(DAY, DATEDIFF(DAY, 0, CREATE_DATE), 1)
then ORDER_QTY
when CREATE_DATE = DATEADD(DAY, DATEDIFF(DAY, 0, CREATE_DATE), 1)
and CREATE_TIME <= '14:59:59'
then ORDER_QTY
end) as small_window_qty
, sum(ORDER_QTY) as ord_qty
, sum(RELEASED_QTY) as rls_qty
from table
对此的任何帮助将不胜感激。只需要一种方法将日子组织到以下存储桶中:正常时间窗口 = 下午 6 点到 6 点创建;较小的小时窗口 = 下午 6 点到 3 点创建;同意 = 下午 3 点(上午 12 点至下午 3 点)发货
编辑:一些澄清。我试图完成的是根本原因分析。我们有每天创建的订单,并且必须在创建后 2 天内发货。我们正试图弄清楚为什么我们的订单没有按时发货。因此,作为 RCA,我试图深入了解订单的创建时间、发货时间(或发布时间相同)以及发货时间。上述时间窗口是为某一天创建订单的截止时间。示例:
今天创建了 300 个单位,它们必须在 2 天后发货。我想看看,在创建的 300 个中,有多少是在下午 3 点之前创建的,其中有多少是在当天下午 3 点之前发送的。希望能澄清事情。并非所有创建的东西都必须在同一天发货,因为我们有 2 天的时间来运送订单。
【问题讨论】:
-
最好显示一些分布在 2 天(至少)内的样本数据,这些数据触及所有可能的窗口并显示哪些行属于哪些窗口。您的最后一个窗口有点令人担忧,因为它指的是“调度”而不是“创建”。这将有助于澄清您如何知道某些东西是“由...发送的”。
-
此外,如果您遇到转换问题,查看表定义(包括列名/类型)通常会有所帮助。
-
转换不是问题,只是在此处无法创建正确的表达式。我应该澄清一下,dispatch = Release,同样的事情。
-
@SM我已将结果添加到原始帖子中
-
根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或键入问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。
标签: sql sql-server tsql datetime