У меня есть представление, в котором есть список заданий, с такими данными, как то, кому они назначены, и этап, на котором они находятся. Мне нужно написать хранимую процедуру, которая возвращает количество заданий, которые есть у каждого человека на каждом этапе. .
Пока у меня есть это (упрощенно):
DECLARE @ResultTable table
(
StaffName nvarchar(100),
Stage1Count int,
Stage2Count int
)
INSERT INTO @ResultTable (StaffName, Stage1Count)
SELECT StaffName, COUNT(*) FROM ViewJob
WHERE InStage1 = 1
GROUP BY StaffName
INSERT INTO @ResultTable (StaffName, Stage2Count)
SELECT StaffName, COUNT(*) FROM ViewJob
WHERE InStage2 = 1
GROUP BY StaffName
Проблема в том, что строки не объединяются. Поэтому, если у сотрудника есть рабочие места в stage1 и stage2, в @ResultTable есть две строки. Что я действительно хотел бы сделать, так это обновить строку, если она существует для сотрудника, и вставить новую строку, если она не существует.
Кто-нибудь знает, как это сделать, или может предложить другой подход?
Я действительно хотел бы избежать использования курсоров для итерации по списку пользователей (но это мой запасной вариант).
Я использую SQL Server 2005.
Редактировать: @Lee: К сожалению, InStage1 = 1 было упрощением. Это действительно больше похоже на то, ГДЕ DateStarted НЕ НУЛЬ, а DateFinished НУЛ.
Редактировать: @BCS: Мне нравится идея сделать сначала вставку всего персонала, поэтому мне просто нужно каждый раз обновлять. Но я изо всех сил пытаюсь получить правильные утверждения UPDATE.