一周结束时有多少张门票?

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 行开始的片段时有问题:

边缘计算社区携手CNCF赠送KubeCon门票50张!

使用 PayPal 在线订票:防止多个访客购买同一张票

癫价炒黄牛4万一张!刘德华演唱会门票秒杀系统几近瘫痪!华仔拍片呼吁:不要买黄牛

js 怎么计算上一周下一周?

10-1测试