2012-02-21 12 views
1

私はこれを研究するのに時間を費やしましたが、答えは見つかりませんでした。SQL Server:集計値を挿入

WinterInspectionResultsというテーブルが1つあり、InspectionResulstsという別のテーブルがあります。最初のテーブルの値を2番目のテーブルに挿入するだけです。 場合によっては、WinterInspectionResultsInspectionResultsの1つのエントリに対応する複数のエントリを持ちます。だから私はsum()関数を使用します。私はエラーを取得挿入しようとすると 問題がされています

Violation of PRIMARY KEY constraint 'PK_InspectionResults'. 
Cannot insert duplicate key in object 'dbo.InspectionResults'. 

ので、多分私は、関数がどのように動作するかを正確に集計理解していません。 誰かがこれを経験したことがありますか、それを回避する方法を知っていますか? dbo.InspectionResultsには、2つの外部キーの組み合わせである集計キーがあります。

私は問題の原因を把握してくれてありがとうございました。

+2

上に既にある値を挿入しないようにチェックです。私は一時テーブルを使ってT-SQLを書く必要があるだろうと推測していますが、ちょっとした情報がなくても正確にどのように見えるか分かりません。 – NickHeidke

+0

いくつかのコードを表示してください –

+0

あなたは、エラーを生成している使用しているテーブル構造とクエリを投稿できますか? – Taryn

答えて

1

SUMに問題はないと思っていますが、すでに存在する値をInspectionResultsに挿入しようとしています。重複を挿入していないことを確認する必要があります。このようなもの:

INSERT INTO InspectionResults(List of your columns) 
SELECT A.* 
FROM ( SELECT [Key Columns Of InspectionResults], SUM([Agreggated Column]) 
     FROM WinterInspectionResults 
     GROUP BY [Key Columns Of InspectionResults]) A 
LEFT JOIN InspectionResults B 
ON A.[Key Columns Of InspectionResults] = B.[Key Columns Of InspectionResults] 
WHERE B.[Key Columns Of InspectionResults] IS NULL 
0

あなたのテーブルはIDと値のみで作成されていると仮定します。その他のフィールドは調整できます。 何が不足していると、いくつかのテーブルstrucutresとSQLが参考になるInspectionResulsts

insert into InspectionResulsts (ID, VALUE) 
select WI.ID, SUM(WI.VALUE) 
from WinterInspectionResults WI 
where WI.ID not in (select ID from InspectionResulsts) 
関連する問題