私はC#を使用したASP.NETの新しい開発者です。ある会社向けにWebベースのアプリケーションを開発しましたが、現在、システムにアクセスしている一意のユーザーの数を示すログを作成する必要があります。たとえば、部門AAの従業員AとBは、今日システムにアクセスしました。従業員Aは、同じ日に2回システムにアクセスしました。ログには、部門AAの従業員が3人ではなく、今日システムにアクセスしたことが2人いることが示されているはずです。
私は次のデータベース設計を持っています:
Employee Table: Username, Name, DivisionCode (DivisionCode is a foreign key to SapCode)
Divisions Table: SapCode DivisionShortcut
Log Table: ID, Username, DateTimeAccessing
ユーザー名、従業員名、部門、およびDateTimeAccessingを表示する次のクエリを作成しました。
SELECT dbo.[Log].Username, dbo.employee.Name, dbo.Divisions.DivisionShortcut, dbo.[Log].DateTimeAccessing
FROM dbo.employee INNER JOIN
dbo.[Log] ON dbo.employee.Username = dbo.[Log].Username INNER JOIN
dbo.Divisions ON dbo.employee.DivisionCode = dbo.Divisions.SapCode
クエリには、次のような部門と日付に基づいて、システムに毎日アクセスした従業員の数が表示されます。
At Nove 21, Division AA = 2
Nove 21, Division BB = 7
Nove 20, Division AA = 12 and so on
それで、それをどのように行うのですか?
*更新: * 私は今次のクエリを使用しています:
SELECT CONVERT(varchar(10), l.DateTimeAccessing, 120) AS Date, d.DivisionShortcut, COUNT(DISTINCT l.Username) AS Cnt
FROM dbo.employee AS e INNER JOIN
dbo.[Log] AS l ON e.Username = l.Username RIGHT OUTER JOIN
dbo.Divisions AS d ON e.DivisionCode = d.SapCode
GROUP BY CONVERT(varchar(10), l.DateTimeAccessing, 120), d.DivisionShortcut
問題は、たとえば、今日またはすべての部門の11月10日の統計を表示したい場合、日付列に、その日にシステムにアクセスしている従業員がいない部門のNULL値が表示されることです。なんで?そしてそれを修正する方法は?