添加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”无效。