一周结束时有多少张门票?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一周结束时有多少张门票?相关的知识,希望对你有一定的参考价值。
希望有人可以帮助我进一步解决这个问题。
我正在编写一个查询,以便每周提取打开的票证信息。打开的票证被归类为具有解决方案为NULL的ticketID。
我希望按周开始日期(星期一到星期五)显示这些数据,因此所有在星期五下午5点之前未解决的门票将计入该周。输出看起来像这样。
week commencing | open tickets
05-jan-2018 | 5
12-jan-2018 | 6
我需要这个至少12个月(52周)
实现这一目标的最佳方式是什么?我有一个日历表,其中存储了日期,周开始日期,我只是不确定如何让它完成上述操作。
到目前为止,我只在我的select语句中有以下子句CASE WHEN Solvedate为null或已解决> @LastWorkDay然后1 else 0 LastWorkDay参数设置为上周五,所以这可以工作并显示上周所有打开的票据。但是,我不太确定如何获取过去52周的数据
非常感谢
答案
我认为这可以满足您的需求。它被设计为运行一个日历年(您通过更改@vYear的值来选择年份)。
DECLARE
@vYear AS INT,
@vJan1Year DATETIME,
@vDec31Year DATETIME
/* Set the @vYear variable to the year you are analyzing */
SET
@vYear = 2018
SET
@vJan1Year = DATEADD(yyyy, @vYear - 1900, 0)
SET
@vDec31Year = DATEADD(yyyy, @vYear - 1899, 0)
; WITH
cte_Fridays AS
(
SELECT
@vJan1Year AS DateOfYear
UNION ALL
SELECT
DATEADD(d, 1 ,cte_Fridays.DateOfYear)
FROM
cte_Fridays
WHERE
DATEADD(d,1,cte_Fridays.DateOfYear) < @vDec31Year
)
SELECT
cte_Fridays.DateOfYear,
COUNT(t.[ticketID])
FROM
cte_Fridays
LEFT JOIN
yourtablename AS t
ON
(t.[solvedate] IS NULL OR t.[solvedate] > cte_Fridays.DateOfYear)
AND
t.[opendate] < cte_Fridays.DateOfYear
WHERE
DATENAME(dw, DATEADD(d, 0 ,cte_Fridays.DateOfYear)) = 'Friday'
GROUP BY
cte_Fridays.DateOfYear
ORDER BY
DateOfYear
OPTION
(MaxRecursion 366)
以上是关于一周结束时有多少张门票?的主要内容,如果未能解决你的问题,请参考以下文章
EF添加关联的提示问题:映射从第 260 行开始的片段时有问题: