获取指定日期内每天的总天数

时间:2017-12-13 12:17:50

标签: html sql sql-server html-table

我只是从一些想法中寻找如何解决我的问题。

我在Excel中使用它,但我正在尝试使用html表。

我在sql server中有一个表,其中有一些日期如下图所示:

enter image description here

我正在尝试达到此结果。看看' starDate'之间的所有日子。并且' endDate'并总结每天的总发生次数:

enter image description here

1 个答案:

答案 0 :(得分:0)

要解决SQL方面的问题,可以使用递归公用表表达式(CTE)生成一个“数字表”,它涵盖[startDate]和[endDate]之间天数的最大可能差异,使用DATEADD函数为每个范围中的每个日期生成一行,然后对其进行计数。如果您的原始表名为[tblStartEnd],则查询将如下所示:

WITH numbers (n) AS
(
    SELECT 0 AS n
    UNION ALL
    SELECT n+1 FROM numbers WHERE n<100
)
SELECT selectedDate, COUNT(*) AS occurrences
FROM
    (
        SELECT DATEADD(day, n, startDate) AS selectedDate, endDate 
        FROM tblStartEnd CROSS JOIN numbers
    ) t
WHERE selectedDate <= endDate
GROUP BY selectedDate
OPTION (MaxRecursion 0);
制造

selectedDate             occurrences
-----------------------  -----------
2017-12-14 00:00:00.000            1
2017-12-15 00:00:00.000            1
2017-12-16 00:00:00.000            1
2017-12-17 00:00:00.000            1
2017-12-18 00:00:00.000            2
2017-12-19 00:00:00.000            2
2017-12-20 00:00:00.000            2
2017-12-21 00:00:00.000            2
2017-12-22 00:00:00.000            1
2017-12-23 00:00:00.000            1
2017-12-24 00:00:00.000            1
2017-12-25 00:00:00.000            1
2017-12-26 00:00:00.000            4
2017-12-27 00:00:00.000            4
2017-12-28 00:00:00.000            5
2017-12-29 00:00:00.000            6

然后您的应用程序代码可以从这些结果中生成HTML表。