Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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/database/8.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查询中缺少的日期_Sql_Database - Fatal编程技术网

添加SQL查询中缺少的日期

添加SQL查询中缺少的日期,sql,database,Sql,Database,我正在尝试将缺少的日期添加到查询中,以便我的结果如下所示: 10/22/2018 15 10/21/2018 0 10/20/2018 14 与此相反: 10/22/2018 15 10/20/2018 14 我希望列出过去300天,即使输出值为0 我的问题是: SELECT TOP (300) CAST(createddate as DATE), count(DISTINCT ID) FROM table GROUP BY CAST(createddate as DATE)

我正在尝试将缺少的日期添加到查询中,以便我的结果如下所示:

10/22/2018 15
10/21/2018 0
10/20/2018 14
与此相反:

10/22/2018 15
10/20/2018 14
我希望列出过去300天,即使输出值为0

我的问题是:

SELECT TOP (300)
    CAST(createddate as DATE),
    count(DISTINCT ID)
FROM table
GROUP BY CAST(createddate as DATE)
ORDER BY CAST(createddate as DATE) DESC

您可以使用递归CTE生成数据:

WITH dates as (
      SELECT MAX(CAST(createddate as date)) as dte, 1 as lev
      FROM table
      UNION ALL
      SELECT DATEADD(day, -1, dte), lev + 1
      FROM dates
      WHERE lev < 300
     )
SELECT COUNT(DISTINCT t.ID)
FROM dates d LEFT JOIN
     table t
     ON d.dte = CAST(t.createddate as DATE)
GROUP BY d.dte
ORDER BY d.dte DESC
OPTION (MAXRECURSION 0);

如果你有一个日历表,它只是一个简单的左连接。请用你正在使用的数据库标记你的问题。我使用的是MS SQL数据库。没有日历表。查询执行失败原因:SQL错误[208][S0002]:对象名称“CTE”无效。