Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL未完成记录按天分类有多长时间了_Sql_Sql Server_Tsql - Fatal编程技术网

SQL未完成记录按天分类有多长时间了

SQL未完成记录按天分类有多长时间了,sql,sql-server,tsql,Sql,Sql Server,Tsql,我问了一个类似的问题,但我现在需要了解,到目前为止,销售业绩有多长。这将分为24小时或一天,最多72小时。下面是数据集输出的一个示例,未完成时间将在一个组内,但日期必须是任何日期,即使它不在数据集内(第二行为2020-01-02) Date TimeOutstanding VolumeOutstanding 2020-01-01 Under24Hour 1 2020-01-02

我问了一个类似的问题,但我现在需要了解,到目前为止,销售业绩有多长。这将分为24小时或一天,最多72小时。下面是数据集输出的一个示例,未完成时间将在一个组内,但日期必须是任何日期,即使它不在数据集内(第二行为2020-01-02)

Date         TimeOutstanding    VolumeOutstanding  
2020-01-01   Under24Hour        1                                   
2020-01-02   Under48Hour        1
2020-01-03   Under24Hour        3
2020-01-03   Under72Hour        1
2020-01-04   Under48Hour        3
2020-01-05   Under72Hour        2
2020-01-05   Over72Hour         1 
数据集

SaleID   Date         Outcome
1        2020-01-01   New
1        2020-01-01   Complete
2        2020-01-01   New
3        2020-01-03   New
4        2020-01-03   New
5        2020-01-03   New
2        2020-01-04   Complete
5        2020-01-04   Complete
3        2020-01-06   Complete
4        2020-01-07   Complete

首先,您可以用新的完成日期汇总每个salesid。然后,生成您关心的日期。并使用条件聚合:

select d.date,
       count(*) as num_open,
       sum(case when new_date >= dateadd(day, -1, d) then 1 else 0
           end) as within_1day,
       sum(case when new_date < dateadd(day, -1, d)  and new_date >= dateadd(day, -3, d then 1 else 0
           end) as within_1_3days_ago,
       . . .
from (select distinct date from t) d left join
     (select salesid, min(date) as new_date,
             nullif(max(date), min(date)) as completed_date
      from t
      group by salesid
     ) t
     on new_date <= date and (date < completed_date or completed_date is null)
group by d.date

你有没有进一步尝试修改之前的答案,以得到你想要的新结果?那些企图是什么?为什么它们不起作用?我确实调整了上一个答案中给出的解决方案,以解决我遇到的其他一些问题,但由于使用了GetDate,我无法解决这个问题。当表中不包含日期时,情况如何,在上述情况下,日期2020-01-02不存在,但当天仍有1笔未完成销售。日期可能会丢失,因为没有发生任何操作,即没有新的或完成的条目day@Chris . . . 将d子查询替换为所需的日期列表—使用值的显式列表或来自另一个表的显式列表,或者可能通过递归CTE生成。