私は一連のデータを持っており、結合するフィールドとテーブルの数は非常に複雑ですが、この特定の問題に関する説明のために、ここで必要なフィールド/テーブルを使用して問題を抽出できると思います。
ClientData、Sources、Pricesの3つのテーブルがあります
最小値を選択する前の現在のクエリは次のようになります。
select c.RecordID, c.Description, s.Source, p.Price, p.Type, p.Weight
from ClientData c
inner join Sources s ON c.RecordID = s.RecordID
inner join Prices p ON s.SourceID = p.SourceID
これにより、次の結果が生成されます。
RecordID Description Source Price Type Weight
=============================================================
001002003 ABC Common Stock Vendor 1 104.5 Close 1
001002003 ABC Common Stock Vendor 1 103 Bid 2
001002003 ABC Common Stock Vendor 2 106 Close 1
001002003 ABC Common Stock Vendor 2 100 Unknwn 0
111222333 DEF Preferred Stk Vendor 3 80 Bid 2
111222333 DEF Preferred Stk Vendor 3 82 Mid 3
111222333 DEF Preferred Stk Vendor 2 81 Ask 4
私がやろうとしているのは、同じレコードに属し、そのレコードのゼロ以外の最小の重みを持つ価格を表示することです(したがって、重みは0より大きくなければなりませんが、残りの重みの中で最小でなければなりません)。したがって、上記の例では、レコード001002003の場合、ベンダー1とベンダー2の両方の重みが1(そのレコードの最小重み)であるため、それらの終値を表示したいと思います。しかし、111222333の場合、ベンダー3の重み2が最小であり、そのレコードのゼロ以外であるため、ベンダー3からの入札価格のみを表示したいと思います。私が求めている結果は次のとおりです。
RecordID Description Source Price Type Weight
=============================================================
001002003 ABC Common Stock Vendor 1 104.5 Close 1
001002003 ABC Common Stock Vendor 2 106 Close 1
111222333 DEF Preferred Stk Vendor 3 80 Bid 2
これを達成する方法について何かアイデアはありますか?
編集:これはSQL ServerCompactEdition用です。