我只是从一些想法中寻找如何解决我的问题。
我在Excel中使用它,但我正在尝试使用html表。
我在sql server中有一个表,其中有一些日期如下图所示:
我正在尝试达到此结果。看看' starDate'之间的所有日子。并且' endDate'并总结每天的总发生次数:
答案 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表。