みなさん、こんにちは…私は次のデータベースを持っています:EmployeeテーブルにリンクされたDivisionテーブル。コーステーブルにリンクされたグループテーブル、つまりコースカテゴリ。これらのテーブルは、Curses_Employeeテーブルを介してリンクされています。これまでのところ、次の出力テーブルのように、各グループ/カテゴリで特定のコースを受講したユーザーの数を示すクエリを思い付くことができました。DivisionName | コース名|参加者の総数
上記のスキームに対する私のクエリは次のとおりです。
SELECT dbo.groups.GroupName, dbo.Divisions.DivisionName, dbo.courses.CourseName, COUNT(dbo.employee_courses.courseId) AS [Total Number of Participants]
FROM dbo.employee AS employee_1 INNER JOIN
dbo.Divisions ON employee_1.DivisionCode = dbo.Divisions.SapCode INNER JOIN
dbo.employee_courses ON employee_1.Username = dbo.employee_courses.employeeId INNER JOIN
dbo.courses ON dbo.employee_courses.courseId = dbo.courses.CourseID INNER JOIN
dbo.groups ON dbo.courses.GroupID = dbo.groups.ID
WHERE (dbo.courses.GroupID = 2)
GROUP BY dbo.courses.CourseID, dbo.courses.CourseName, dbo.Divisions.DivisionName, dbo.groups.GroupName
次に、次の表のように、各部門の従業員の総数と%の2つの列を追加します。DivisionName | コース名|参加者の総数|従業員の総数|%
このクエリを試しましたが、エラーが発生します。
SELECT dbo.groups.GroupName, dbo.Divisions.DivisionName, dbo.courses.CourseName, COUNT(dbo.employee_courses.courseId) AS [Total Number of Participants],
(SELECT COUNT(Name) AS Expr1
FROM dbo.employee
WHERE (DivisionCode = employee_1.DivisionCode)
GROUP BY DivisionCode) AS [Total Number of Employee]
FROM dbo.employee AS employee_1 INNER JOIN
dbo.Divisions ON employee_1.DivisionCode = dbo.Divisions.SapCode INNER JOIN
dbo.employee_courses ON employee_1.Username = dbo.employee_courses.employeeId INNER JOIN
dbo.courses ON dbo.employee_courses.courseId = dbo.courses.CourseID INNER JOIN
dbo.groups ON dbo.courses.GroupID = dbo.groups.ID
WHERE (dbo.courses.GroupID = 2)
GROUP BY dbo.courses.CourseID, dbo.courses.CourseName, dbo.Divisions.DivisionName, dbo.groups.GroupName
エラーメッセージ:
列'dbo.employee.DivisionCode'は、集計関数またはGROUP BY句のいずれにも含まれていないため、選択リストでは無効です。