私は自分のSQLで材料の使用状況を追跡しようとしています。部品が元の順序で使用されたときにデータベースにリンクする方法はありません。部品は、注文が到着した後に単にビンに入り、部品の使用は基本的に、トランザクション時に使用される部品の数のレコードを作成するだけです。私は可能な限り最善の方法で、データを合計して注文番号に順番に割り当てることによって、注文番号への使用をリンクしようとしています。 私のサブクエリは、これまで私を得てくれました。各注文番号は日付で受信されます。私はUSEDATEに基づいて、注文の受領書と同等かそれ以上になる必要がある使用表レコードに参加します。このことにより、生成されたデータは以下のようなある:Oracle SQLデータを順番に結合する
| ORDERNUM | PARTNUM | RECEIVEDATE | ORDERQTY | USEQTY | USEDATE |
|----------|----------|-------------------------|-----------|---------|------------------------|
| 4412 | E1125 | 10/26/2016 1:32:25 PM | 1 | 1 | 11/18/2016 1:40:55 PM |
| 4412 | E1125 | 10/26/2016 1:32:25 PM | 1 | 3 | 12/26/2016 2:19:32 PM |
| 4412 | E1125 | 10/26/2016 1:32:25 PM | 1 | 1 | 1/3/2017 8:31:21 AM |
| 4111 | E1125 | 10/28/2016 2:54:13 PM | 1 | 1 | 11/18/2016 1:40:55 PM |
| 4111 | E1125 | 10/28/2016 2:54:13 PM | 1 | 3 | 12/26/2016 2:19:32 PM |
| 4111 | E1125 | 10/28/2016 2:54:13 PM | 1 | 1 | 1/3/2017 8:31:21 AM |
| 0393 | E1125 | 12/22/2016 11:52:04 AM | 3 | 3 | 12/26/2016 2:19:32 PM |
| 0393 | E1125 | 12/22/2016 11:52:04 AM | 3 | 1 | 1/3/2017 8:31:21 AM |
| 7812 | E1125 | 12/27/2016 10:56:01 AM | 1 | 1 | 1/3/2017 8:31:21 AM |
| 1191 | E1125 | 1/5/2017 1:12:01 PM | 2 | 0 | null |
上記のセクションのためのクエリのようなになります。
SELECT
B.*,
NVL(B2.QTY, ‘0’) USEQTY
B2.USEDATE USEDATE
FROM <<Sub Query B>>
LEFT JOIN USETABLE B2 ON B.PARTNUM = B2.PARTNUM AND B2.USEDATE >= B.RECEIVEDATE
ここに私の究極の目標は、彼らが十分なORDERQTYのを満たしている順次までUSEQTYレコードに参加することです。また、USEQTY列のQTYが実際にそのレコードに適用されたことを表すORDERUSE列を追加する必要があります。私は、クエリは上記のような情報を引き出すために得ることができる場合、私は、ことができるようになります
| ORDERNUM | PARTNUM | RECEIVEDATE | ORDERQTY | USEQTY | USEDATE | ORDERUSE |
|----------|----------|-------------------------|-----------|---------|------------------------|-----------|
| 4412 | E1125 | 10/26/2016 1:32:25 PM | 1 | 1 | 11/18/2016 1:40:55 PM | 1 |
| 4111 | E1125 | 10/28/2016 2:54:13 PM | 1 | 3 | 12/26/2016 2:19:32 PM | 1 |
| 0393 | E1125 | 12/22/2016 11:52:04 AM | 3 | 2 | 12/26/2016 2:19:32 PM | 2 |
| 0393 | E1125 | 12/22/2016 11:52:04 AM | 3 | 1 | 1/3/2017 8:31:21 AM | 1 |
| 7812 | E1125 | 12/27/2016 10:56:01 AM | 1 | 0 | null | 0 |
| 1191 | E1125 | 1/5/2017 1:12:01 PM | 2 | 0 | null | 0 |
:私は上の表に基づいて起こるために必要なものの一例であるどのように単語この任意のより良いので、ここでは本当にわかりませんレコードをグループ化してORDERUSE列を合計すると、どのオーダーが使用されていて、どれが完全に使用されていないのかを知る必要があります。上記の例では、各ORDERNUMのORDERUSE列を合計すると、4412、4111、0393の注文はすべて完全に使用されます。注文7812,1191は、完全に使用されていないことを示します。
問題は私の使用表に注文番号がないことです。追加する方法がないためです。私は部分的に貧弱な設計を信じています。部品が到着すると、単にビンに入れられます。この時点では、シリアル番号やその他の種類のトラッキングは行われません。だから1つが注文されると、それはちょうどビンから引っ張られて送られ、使用記録は単に部品番号、数量、タイムスタンプを記録します。 – Zionmoose