Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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 涉及res的复杂查询_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 涉及res的复杂查询

Sql 涉及res的复杂查询,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有如下表,我需要查询当天创建了多少任务,解决了多少任务,我需要捕获前一天以活动状态传递的任务。例如:TaskId 101于2014年11月10日创建,并于2014年11月12日解决,因此应在2014年11月11日和2014年11月12日的计数中显示 TaskId CreateDate Status ResolvedDate 101 11/10/2014 Resolved 11/12/2014 102 11/10/2014 Resolved 11/10/2014 103 11/11/2014 A

我有如下表,我需要查询当天创建了多少任务,解决了多少任务,我需要捕获前一天以活动状态传递的任务。例如:TaskId 101于2014年11月10日创建,并于2014年11月12日解决,因此应在2014年11月11日和2014年11月12日的计数中显示

TaskId CreateDate Status ResolvedDate
101 11/10/2014 Resolved 11/12/2014
102 11/10/2014 Resolved 11/10/2014
103 11/11/2014 Active NULL 
104 11/11/2014 Resolved 11/13/2014
105 11/13/2014 Active 11/13/2014

请帮助我,因为我想不出任何解决办法。很抱歉,我试图以表格格式发布表格架构,但无法创建表格,我是这个论坛的新手

您可以使用基于案例的聚合来获得结果

CTE生成给定范围的日期列表

对于每一天,使用“案例”、“最大值”和“分组依据”计算当天创建的、以前创建但未解决的活动总量和当天解决的总量


@雷达,你刚刚给了我查询的希望,我改变了查询如下,它开始显示结果。但TotalActive显示的价值低于TotalCreated

declare @start_date datetime = getdate()-30
declare @end_date datetime = getdate()
;WITH CTE AS
(
    SELECT @start_date AS date
    UNION ALL
    SELECT DATEADD(day, 1, date) as date
    FROM CTE
    WHERE DATEADD(day, 1, date) <= @end_date
)
select cte.date,
        sum( case when CONVERT(varchar, CreateDate, 101) <= CONVERT(varchar, cte.date, 101) and CONVERT(varchar, cte.date, 101) <= CONVERT(varchar, ResolveDate, 101) then 1 else 0 end
          ) as TotalActive,
          sum( case when  CONVERT(varchar, cte.date, 101) = CONVERT(varchar, CreateDate, 101) then 1 else 0 end
          ) as TotalCreated,
       sum( case when CONVERT(varchar, cte.date, 101) = CONVERT(varchar, ResolveDate, 101) then 1 else 0 end
          ) as TotalResolved

from cte
left join [WarehouseIncidents] T
ON CONVERT(varchar, CreateDate, 101) >= CONVERT(varchar, cte.date, 101)

GROUP BY CTE.DATE

你试过什么?看起来像是一个简单的案例说明,看看创建和解决日期就可以了。如果你真的要失业了,你应该在你的问题上多下点功夫。如果我不能理解你的意思,我就帮不了你。请展示一些样本数据和一些更多的样本结果。这将帮助你更快地得到答案。哪一天哪一天?就在今天跑步的日期?还是表中的每个日期?一年中的每一天?同样,不确定预期结果应该是什么…为什么不添加一个列,显示从创建到解析所用的时间?雷达-两列Totalactive、TotalResolved的查询计数均为零…@SayaramGattu,我将开始日期设为11月1日,看看10日、11日,也可以将开始日期更改为11月10日,如果你不从11月1日开始。请看这里@SayaramGattu,现在尝试为resolveddate处理空条件。
declare @start_date datetime = getdate()-30
declare @end_date datetime = getdate()
;WITH CTE AS
(
    SELECT @start_date AS date
    UNION ALL
    SELECT DATEADD(day, 1, date) as date
    FROM CTE
    WHERE DATEADD(day, 1, date) <= @end_date
)
select cte.date,
        sum( case when CONVERT(varchar, CreateDate, 101) <= CONVERT(varchar, cte.date, 101) and CONVERT(varchar, cte.date, 101) <= CONVERT(varchar, ResolveDate, 101) then 1 else 0 end
          ) as TotalActive,
          sum( case when  CONVERT(varchar, cte.date, 101) = CONVERT(varchar, CreateDate, 101) then 1 else 0 end
          ) as TotalCreated,
       sum( case when CONVERT(varchar, cte.date, 101) = CONVERT(varchar, ResolveDate, 101) then 1 else 0 end
          ) as TotalResolved

from cte
left join [WarehouseIncidents] T
ON CONVERT(varchar, CreateDate, 101) >= CONVERT(varchar, cte.date, 101)

GROUP BY CTE.DATE