2

私はSQLServerでストアドプロシージャを作成しており、誰かがこの問題を処理するためのより計算効率の高い方法を提案できることを望んでいます。

3000のラインアイテムを含む顧客注文(つまり、「製品需要」)データのテーブルがあります。各レコードは、特定の製品の注文数量を表します。

また、約200のラインアイテムを含む製造オーダー(つまり、「製品供給」)データの別のテーブルがあります。各レコードは、特定の製品ごとに利用可能な数量を表します。

問題は、通常、需要よりも供給が少ないため、カスタム注文テーブルには、製品を受け取るための各顧客注文の位置を示す割り当て優先度の値が含まれていることです。

製造指図で利用可能な数量を顧客注文の指図数量に割り当てる最良の方法は何ですか?注文された以上の量を各顧客注文に割り当てることはできないことに注意してください。

WHILEループを作成し、製品ごと、行ごとに割り当てを行うことでこれを行うことができますが、非常に時間がかかります。

この問題に取り組むためのより速いセットベースの方法はありますか?

4

1 に答える 1

0

テストするデータがありません。これは、部分的な数量を埋めようとはしません。

 select orders.custID, orders.priority, orders.prodID, orders.qty, SUM(cumu.qty) as 'cumu'
 from orders 
 join orders as cumu 
 on cumu.prodID = orders.prodID 
    and cumu.priority <= orders.priority
 join available 
 on availble.prodID = orders.prodID  
 group by orders.custID, orders.priority, orders.prodID, orders.qty 
 having SUM(cumu.qty) < availble.qty
 order by orders.custID, orders.priority, orders.prodID
于 2012-09-11T22:47:06.740 に答える