【发布时间】:2018-09-20 22:15:38
【问题描述】:
我试图解决在特定日期范围内为每个日期返回总和的问题,无论数据是否存在一天。
我发现最好的方法是使用预先填充了所有日期的表格,选择日期范围并将其与我的数据合并。
由于某种原因无法离开加入工作,但工会看起来工作几乎完美。唯一的问题是它会返回我的数据表中存在数据的日期的重复项。
SELECT NULL AS Visitors
,D.DATE AS Day
FROM Database.support.dates D
WHERE D.DATE BETWEEN @Start_date
AND @End_date
UNION
SELECT count(V.id) AS Visitors
,DATEADD(day, 0, DATEDIFF(day, 0, V.CreateTime)) AS Day
FROM Database.Clients.Clients V
WHERE V.CreateTime BETWEEN @Start_date
AND @End_date
AND V.WADID = @WADID
AND (
V.WAPID = @WAPID
OR @WAPID IS NULL
)
GROUP BY DATEADD(day, 0, DATEDIFF(day, 0, V.CreateTime))
ORDER BY Day DESC
前一天一直在研究它,但仍然无法正常工作:/
【问题讨论】:
-
一个有趣的事实:如果您将整个查询合并到自身,您实际上会得到去重结果。
-
你为什么不只是在左连接上寻求帮助?您的 where 条件存在冲突。
-
有趣的@SQL_M :)