私は次のようなSQLシナリオを持っており、これを改善しようとしています。
アイテムのショップに対する返品のIDを持つテーブル「返品」があります。その構成は以下のとおりです。
Returns
-------------------------
Return ID | Shop | Item
-------------------------
1 Shop1 Item1
2 Shop1 Item1
3 Shop1 Item1
4 Shop1 Item1
5 Shop1 Item1
以下に示すように、ショップ、サプライヤー、アイテムを含むテーブルサプライヤーがもう1つあります。
Supplier
---------------------------------
Supplier | Shop | Item | Volume
---------------------------------
supp1 Shop1 Item1 20%
supp2 Shop1 Item1 80%
ご覧のとおり、supp1はitem1の総量の20%を供給しており、supp2はItem1の80%をshop1に供給しています。そして、同じShop1の同じItem1に対して5つのアイテムの返品がありました。次に、4つのリターンIDをSupp1に割り当て、残りの1つのリターンIDをsupp2に割り当てる必要があります。この数値の割り当ては、サプライヤの供給されたボリュームのパーセンテージの比率に基づいています。この配分は、供給されたアイテムの量の比率によって異なります。
ここで、一時テーブルを使用して、以下に示すようにRANKを使用する方法を試しました。
一時テーブル1には、ショップ、返品ID、アイテム、返品IDの総数、および返品IDのランクが含まれます。
一時テーブル2には、ショップ、サプライヤー、アイテム、およびその比率と比率のランクが含まれます。
上記のように、トップの返品IDをトップのサプライヤーに割り当てるのが難しいことに直面しています。SQLにはループがないので、どうすればこれを実現できますか。私はこれを行うためのいくつかの方法を結びつけてきました。
私の環境はTeradataです(ANSI SQLで十分です)。