ジョブのリストを含むビューがあり、ジョブが誰に割り当てられているか、どの段階にいるかなどのデータが含まれています。各段階で各人が持っているジョブの数を返すストアド プロシージャを作成する必要があります。
これまでのところ、これがあります(簡略化):
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
それに関する問題は、行が結合されないことです。したがって、スタッフ メンバーがステージ 1 とステージ 2 にジョブを持っている場合、@ResultTable には 2 つの行があります。私が本当にやりたいのは、スタッフ メンバーの行が存在する場合は行を更新し、存在しない場合は新しい行を挿入することです。
誰かがこれを行う方法を知っていますか、または別のアプローチを提案できますか? カーソルを使用してユーザーのリストを反復処理することは本当に避けたいと思います (しかし、それは私の代替オプションです)。
SQL Server 2005 を使用しています。
編集: @Lee:残念ながら、InStage1 = 1 は単純化されたものでした。これは、WHERE DateStarted IS NOT NULL と DateFinished IS NULL に似ています。
編集: @BCS:最初にすべてのスタッフを挿入するというアイデアが気に入っているので、毎回更新するだけです。しかし、私はそれらの UPDATE ステートメントを正しくするのに苦労しています。