Я бы посоветовал вам хранить таблицу для ваших проектов и отдельную таблицу для ваших сотрудников. Я не знаю, что вы пытаетесь выполнить, поэтому, возможно, сотрудники - это таблица People с флагом, указывающим на сотрудника. Тогда я бы сохранил отдельную таблицу (я бы назвал ее Activity), которая ссылается на проекты и сотрудники и содержит HoursWorked и, возможно, некоторые заметки. Затем, чтобы получить то, что у вас здесь, я бы создал представление, которое объединяет таблицы и группы Project и Employee и суммирует отработанные часы.
Somthing как:
Create table Project
(
ID int not null,
ProjectCode nvarchar(32),
ProjectName nvarchar(128)
);
Create table Employee
(
ID int not null,
EmployeeName nvarchar(128),
PhoneNumber nvarchar(32)
);
Create table Activity
(
ID int not null,
EmployeeID int not null,
ProjectID int not null,
Hours decimal,
Notes nvarchar(MAX)
);
Create View HoursWorked AS
SELECT
P.ProjectCode,
P.ProjectName,
E.EmployeeName,
SUM(A.Hours) AS HoursWorked,
E.PhoneNumber
FROM
Activity A
INNER JOIN Project P ON P.ID = A.ProjectID
INNER JOIN Employee E ON E.ID = A.EmployeeID
GROUP BY
P.ProjectCode,
P.ProjectName,
E.EmployeeName,
E.PhoneNumber
;
Вы должны были бы создать внешние ключевые отношения и все. Также я не тестировал это, поэтому, возможно, я испортил некоторые синтаксисы, но идея там.
Не могли бы вы упомянуть об увольнениях, прежде чем отправлять решение для его устранения? – ms8
Ну, если вы продолжаете повторять сотрудников или проекты в таблице, вы снова и снова будете получать эти данные. Но если вы отделите их, вам понадобится отдельное место для хранения часов. Следовательно, мое высшее. – Brett