これは、トリックを行うと思われる答えです。日付のリストを表示する一時テーブルを作成します (開始日と終了日のループを使用して挿入します。開始日自体を含めたいため、カウンターは 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 バージョンをテストしましたが、正常に動作します。