SQLクエリ-FIFO達成度計算

fifo sql
SQLクエリ-FIFO達成度計算

次の構造のような2つのテーブルがあり、部品がFIFOルール(先入れ先出し)に従って出荷されているかどうかを確認する必要があります。

パーツのシーケンスを取得するために、 SER_LOT_NR`カラムを使用しています- min(SER_LOT_NR) `を最初に出荷する必要があります。 いくつかの条件では、出荷された部品は在庫に見られません。 それで、私は両方のテーブルの結合を取ることから始めました。 私の最後の状況は下にありますが、結果を確認することはできません。

株式:

PART_NUMBER     QUANTITY     SER_LOT_NR
=========================================
6G9T12A690BAS   40       327560527
6G9T12A690BAS   50       326964958
6G9T12A690BAS   50       326367818
6G9T12A690BAS   50       327188030
6G9T12A690BAS   40       327560526
6G9T12A690BAS   50       327064738
6G9T12A690BAS   40       326668866
6G9T12A690BAS   6        321796241
6G9T12A690BAS   40       323769823
6G9T12A690BAS   40       323769822
6G9T12A690BAS   8        323833790
6G9T12A690BAS   6        323170275
6G9T12A690BAS   7        323170269
6G9T12A690BAS   10       322136920
6G9T12A690BAS   10       321642320
6G9T12A690BAS   7        323170268
6G9T12A690BAS   40       326668868

最終出荷:

PART_NUMBER     QUANTITY     SER_LOT_NR
=========================================
6G9T12A690BAS   8        320372476
6G9T12A690BAS   10       321665073
6G9T12A690BAS   10       321665074
6G9T12A690BAS   2        321796241
6G9T12A690BAS   8        321796242
6G9T12A690BAS   2        321796252

SQLクエリ:

SELECT PART_NUMBER,
       MIN(QUANTITY) AS QUANTITY,
       SER_LOT_NR, MAX(SHIPPED) AS SHIPPED
  FROM (SELECT PART_NUMBER,
               QUANTITY,
               SER_LOT_NR,
               '0' as SHIPPED
          FROM Sql1Tablo1
        UNION
        SELECT PART_NUMBER,
               QUANTITY,
               SER_LOT_NR,
               '1' as SHIPPED
          FROM Sql2Tablo2)
 WHERE SER_LOT_NR LIKE '_________'
GROUP BY SER_LOT_NR, PART_NUMBER
ORDER BY PART_NUMBER, SER_LOT_NR

結果:

PART_NUMBER     QUANTITY     SER_LOT_NR     SHIPPED
=====================================================
6G9T12A690BAS   8        320372476      1
6G9T12A690BAS   10       321642320      0
6G9T12A690BAS   10       321665073      1
6G9T12A690BAS   10       321665074      1
6G9T12A690BAS   2        321796241      1
6G9T12A690BAS   8        321796242      1
6G9T12A690BAS   2        321796252      1
6G9T12A690BAS   10       322136920      0
6G9T12A690BAS   7        323170268      0
6G9T12A690BAS   7        323170269      0
6G9T12A690BAS   6        323170275      0
6G9T12A690BAS   40       323769822      0
6G9T12A690BAS   40       323769823      0
6G9T12A690BAS   8        323833790      0
6G9T12A690BAS   50       326367818      0
6G9T12A690BAS   40       326668866      0
6G9T12A690BAS   40       326668868      0
6G9T12A690BAS   50       326964958      0
6G9T12A690BAS   50       327064738      0
6G9T12A690BAS   50       327188030      0
6G9T12A690BAS   40       327560526      0
6G9T12A690BAS   40       327560527      0

前の例の結果表でわかるように、部品6G9T12A690BASの合計出荷数量は40個です。 ただし、FIFOルールに従って、SER_LOT_NUMBERに従って出荷する必要があります。 320372476、321642320、321665073、321665074、321796241。 したがって、8個の321796242と2個の321796252を出荷する代わりに、10個の321642320を出荷する必要があります。 321642320 <321796242および321796252であるため。 出荷されたアイテムがこの先入れ先出しルールに従ってOKまたはNOKであるかどうかを、結果テーブルに部分的に表示したいのです。 最後に、次の表のようなものを取得します。

PART_NUMBER     QUANTITY     SER_LOT_NR     SHIPPED     MUST BE SHIPPED     ATTAINMENT
=============================================================================================
6G9T12A690BAS   8        320372476      1     1     OK
6G9T12A690BAS   10       321642320      0     1     -
6G9T12A690BAS   10       321665073      1     1     OK
6G9T12A690BAS   10       321665074      1     1     OK
6G9T12A690BAS   2        321796241      1     1     OK
6G9T12A690BAS   8        321796242      1     0     NOK
6G9T12A690BAS   2        321796252      1     0     NOK
6G9T12A690BAS   10       322136920      0     0     -
6G9T12A690BAS   7        323170268      0     0     -
6G9T12A690BAS   7        323170269      0     0     -
6G9T12A690BAS   6        323170275      0     0     -
6G9T12A690BAS   40       323769822      0     0     -
6G9T12A690BAS   40       323769823      0     0     -
6G9T12A690BAS   8        323833790      0     0     -
6G9T12A690BAS   50       326367818      0     0     -
6G9T12A690BAS   40       326668866      0     0     -
6G9T12A690BAS   40       326668868      0     0     -
6G9T12A690BAS   50       326964958      0     0     -
6G9T12A690BAS   50       327064738      0     0     -
6G9T12A690BAS   50       327188030      0     0     -
6G9T12A690BAS   40       327560526      0     0     -
6G9T12A690BAS   40       327560527      0     0     -

  0  0


ベストアンサー

タイトルとURLをコピーしました