这是我怀疑可以解决问题的答案。我创建了一个临时表来为您提供日期列表(我使用带有开始和结束日期的循环插入。计数器必须从 0 开始,因为您想包含开始日期本身)。
然后,我只是将 DateList 加入 Wins 表,为您提供该范围内所有日期的列表、用户及其在这些日期的访问。我尚未对其进行测试,但我怀疑代码接近于您所需要的。
DECLARE Counter INT DEFAULT 0
DECLARE NumDays INT DEFAULT DATEDIFF(StartDate, EndDate)
CREATE TEMPORARY TABLE DateList
(
[Date] DATETIME
)
WHILE Counter <= NumDays
INSERT INTO DateList ([Date]) VALUES (DATE_ADD(StartDate, INTERVAL Counter Day))
SET Counter = Counter + 1
END WHILE
SELECT
[User]
,COUNT(User) AS Wins
,DateList.[Date] AS [Date]
FROM
DateList LEFT JOIN Wins ON Wins.[Date] = DateList.[Date]
WHERE
DateList.[Date] BETWEEN StartDate AND EndDate
GROUP BY
[User]
,DateList.[Date]
ORDER BY
DateList.[Date]
编辑:我对我的加入和计数进行了一些更改。我已经测试了 MSSQL 版本,它工作正常。