如何在sql server的最后7个日期后2 - 2天生成日期计数?

时间:2017-06-21 07:17:42

标签: sql-server

我在sql server中为每日获取最后7个日期的电子邮件计数创建一个查询。我写了一个查询,但没有给出表的预期输出。现在只是在最近7个日期给出计数。在下面写下我的查询并告诉我我的错误在哪里。

这是我的查询=>

SELECT dateadd(day, T.i, CAST(GETDATE() AS DATE)) AS DateColumn, uf.TotalCount 
        FROM (VALUES (-6), (-5), (-4), (-3), (-2), (-1), (0)) AS T(i)
        OUTER APPLY 
        (
           SELECT Count(InsertDateTime) AS TotalCount
           FROM Email
           WHERE Datediff(day,InsertDateTime, dateadd(day, T.i, getdate())) = 0 
        ) uf

This is my o/p=>
    DateColumn | Count
    15-06-2017    10
    16-06-2017    05
    17-06-2017    20
    18-06-2017    10
    19-06-2017    30
    20-06-2017    50
    21-06-2017    40


This is my Expected output =>

DateColumn | Count
03-06-2017    10
06-06-2017    05
09-06-2017    20
12-06-2017    10
15-06-2017    30
18-06-2017    50
21-06-2017    40

任何人都知道怎么做才能告诉我。

1 个答案:

答案 0 :(得分:1)

如果您想要相同的计数值输出,请更改它。

SELECT dateadd(day, T.i * 3, CAST(GETDATE() AS DATE)) AS DateColumn, uf.TotalCount 
        FROM (VALUES (-6), (-5), (-4), (-3), (-2), (-1), (0)) AS T(i)
        OUTER APPLY 
        (
           SELECT Count(InsertDateTime) AS TotalCount
           FROM Email
           WHERE Datediff(day,InsertDateTime, dateadd(day, T.i * 3, getdate())) = 0 
        ) uf