私は次のSQLを持っています:
SELECT
ud.firstname + ' ' + ud.lastname,
COUNT(a.createdDate) AS ActivityCount,
au.LastActivityDate
FROM
dbo.aspnet_Users au
INNER JOIN dbo.UserDetails ud
ON au.UserId = ud.AspNetUserId
LEFT OUTER JOIN dbo.audit a
ON au.LoweredUserName = a.username
WHERE
(
au.LoweredUserName IN ('u1', 'u2', 'u3')
)
AND a.createdDate > '2012-09-18'
GROUP BY ud.firstname + ' ' + ud.lastname, au.LastActivityDate
ORDER BY au.LastActivityDate DESC
しかし、 and はその後アクティビティがないu1
としましょう-- その場合、結果には のみが含まれます。u3
2012-09-18
u2
LEFT OUTER JOIN
すべてのレコードを確実に取得したと思いましたが、これは、別のテーブルをフィルタリングする句aspnet_Users
の秒条件によるものだと思います...WHERE
指定されたすべてのユーザーを取得し、指定された期間のデータが存在しない場合に ActivityCount としてゼロを取得するには、何を変更する必要がありますか?