私は、自分が誰に割り当てられているか、どのステージにいるのかなどのデータを含むビューを持っています。各ステージで各人が持つジョブの数を返すストアドプロシージャを作成する必要があります。Upsert Into Tableを実行するにはどうすればよいですか?
これまでのところ、私はこの(簡体字)があります。
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に2つの行があります。私が本当にしたいのは、スタッフが存在する場合は行を更新し、存在しない場合は新しい行を挿入することです。
これを行う方法を知っている人はいますか、別の方法を提案できますか? 私は本当にユーザーのリストを反復するためにカーソルを使用しないようにしたいと思います。
私はSQL Serverを使用しています2005年
編集:@Lee:残念ながらInStage1 = 1は、簡素化しました。実際には、DateStartedはNULLではなく、DateFinishedはNULLです。
編集:@BCS:私はすべてのスタッフの挿入を最初からやっているので、毎回更新する必要があります。しかし、私はこれらのUPDATEステートメントを正しいものにするのに苦労しています。
「重複している」とは、INSERTです...DUPLICATE KEY UPDATEについては、次のドキュメントを参照してください。http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html – nickf