でテーブル変数から、最高得点の結果を選ぶ:は、私はSQL Server 2005で次の表の変数を持つSQL
DECLARE @results TABLE (id int IDENTITY(1,1),
customerId int,
salesId int,
score int,
lastServiceDate datetime,
PRIMARY KEY(id));
それはように私は、テーブルを掃除またはテーブルの結果にアクセスするための効率的な方法を必要としますsalesIdごとに1つの結果しか返しません。 salesIdごとに1つ以上の結果がある場合は、得点が最も高い行を表示するか、または同値の場合はCustomerテーブルの最新のlastServiceDateを表示する必要があります。
今、私のテストデータは次のようになります。
id customerId salesId score lastServiceDate
1 950 418 3 2009-08-09 00:00:00.000
2 951 418 3 2009-08-19 00:00:00.000
3 952 418 1 2009-08-22 00:00:00.000
4 953 419 2 2009-08-15 00:00:00.000
私はこの例では、戻ってくる何か、わずか2行たい - ID 2(salesId 418のトップスコア/ lastServiceDate)とidを4(salesId 419の結果のみ)。最後に、このテーブルのデータを取り込み、JobResultテーブルに挿入して、customerIdと@resultsからsalesIdを選択する必要があります。これらの制限があります。
(これはhttps://stackoverflow.com/questions/1343647に尋ねた質問を終了します。)
これは、@記号で識別される「テーブル変数」ですが、#resultsは一時表です。 @はメモリにあり、#はディスク上にあります。 –
したがって、顧客に関係なくsalesIdごとに1行が必要ですか? salesId 3が同じ日に2人の顧客にサービスを提供し、それぞれが全く同じスコアを受け取ったらどうなるでしょうか? JobResultテーブルに何を挿入する必要がありますか? –