Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server MSSQL选择按天/周分组的活动订阅服务器_Sql Server - Fatal编程技术网

Sql server MSSQL选择按天/周分组的活动订阅服务器

Sql server MSSQL选择按天/周分组的活动订阅服务器,sql-server,Sql Server,我试图从如下表中提取活动订阅服务器: StartDate EndDate UpgradeProcessed Cancelled Recurring Created 2018-09-05 09:46:30.000 2018-10-07 09:46:30.000 1 0 1 2018-09-05 10:54:57.363 2018-09-05 09:2

我试图从如下表中提取活动订阅服务器:

StartDate                EndDate                  UpgradeProcessed    Cancelled  Recurring  Created
2018-09-05 09:46:30.000  2018-10-07 09:46:30.000  1                   0          1          2018-09-05 10:54:57.363
2018-09-05 09:26:32.000  2018-12-07 09:26:32.000  1                   0          1          2018-09-05 10:41:09.460
2018-09-05 09:17:49.000  2018-12-07 09:17:49.000  1                   0          1          2018-09-05 10:27:14.707
2018-09-05 09:21:16.000  2018-12-07 09:21:16.000  1                   0          1          2018-09-05 10:27:06.593
2018-09-05 09:23:04.000  2018-10-07 09:23:04.000  1                   0          1          2018-09-05 10:27:05.877
2018-09-04 09:09:42.000  2018-12-07 09:09:42.000  1                   0          1          2018-09-04 10:13:59.847
2018-09-04 09:02:29.000  2018-10-07 09:02:29.000  1                   0          1          2018-09-04 10:13:42.693
2018-09-04 09:27:23.000  2018-12-07 09:27:23.000  1                   0          1          2018-09-04 09:27:55.110
2018-09-04 08:09:31.000  2018-12-07 08:09:31.000  1                   0          1          2018-09-04 09:19:18.193
2018-09-04 08:12:20.000  2018-10-07 08:12:20.000  1                   0          1          2018-09-04 09:19:18.117
2018-09-04 08:12:20.000  2018-10-07 08:12:20.000  1                   0          1          2018-09-04 09:19:18.117
我想按天或周分组,每天必须包括当天活动的任何记录,即使它们包含在前几行中

在上述情况下,我们将有以下情况:

Date        Count
2018-09-05  11
2018-09-04  6
我可以每天在如下时间提取数据:

SELECT COUNT(*) FROM [Subscriptions]
 WHERE DATEADD(day, DATEDIFF(day,0, EndDate),0) >= DATEADD(day, DATEDIFF(day,0,Cast('2018-09-05' AS datetime)),0)
 AND DATEADD(day, DATEDIFF(day,0, Created),0) <= DATEADD(day, DATEDIFF(day,0,Cast('2018-09-05' AS datetime)),0)
从[订阅]中选择计数(*)
其中DATEADD(day,DATEDIFF(day,0,EndDate),0)>=DATEADD(day,DATEDIFF(day,0,Cast('2018-09-05'为datetime)),0)
和DATEADD(day,DATEDIFF(day,0,Created),0)试试这个

SELECT CAST(StartDate AS DATE),COUNT(1) 
FROM [Subscriptions]
WHERE DATEADD(day, DATEDIFF(day,0, EndDate),0) >= DATEADD(day, DATEDIFF(day,0,Cast('2018-09-05' AS datetime)),0)
AND DATEADD(day, DATEDIFF(day,0, Created),0) <= DATEADD(day, DATEDIFF(day,0,Cast('2018-09-05' AS datetime)),0)
GROUP BY CAST(StartDate AS DATE)
选择CAST(开始日期为日期),计数(1)
来自[订阅]
其中DATEADD(day,DATEDIFF(day,0,EndDate),0)>=DATEADD(day,DATEDIFF(day,0,Cast('2018-09-05'为datetime)),0)

和DATEADD(day,DATEDIFF(day,0,Created),0)好的,找到了答案,我修改了一个脚本来制作一个数字表,并使用该页面上的查询来获得灵感

SELECT [stats.dates].thedate, COUNT(*)
FROM   [stats.dates]
JOIN   Subscriptions ON [stats.dates].thedate >= cast([StartDate] as DATE) AND [stats.dates].thedate <= cast([EndDate] as DATE)
WHERE [stats.dates].thedate >= '2017-09-04' AND [stats.dates].thedate <= '2018-09-04'
GROUP  BY [stats.dates].thedate
选择[stats.dates]。日期,计数(*)
从[统计数据日期]

加入[stats.dates]上的订阅。日期>=cast([StartDate]as DATE)和[stats.dates]。日期='2017-09-04'和[stats.dates]。日期这提供了当天开始的订阅数,而不是当天的活动总订阅数。